0

現在の Java プロジェクトでは、既にクローンされた Mercurial リポジトリのローカル リビジョン番号とリモート リビジョン番号を比較したいと考えています。特に、サーバーから最新のリビジョン番号を取得したいと考えています。水銀関数にアクセスするために javahg を使用しています。しかし、javahg ライブラリには、それを実現するためのコマンドが見つかりません。

通常、identity コマンドを使用しますが、これはこのライブラリではサポートされていません。別の方法として、サポートされている着信コマンドを使用することもできますが、うまくいかないようです。次のコード行を実行しようとしました。

IncomingCommand.on(localRepo).execute(serverURL)

結果のバンドルは「-1」を返します。実行関数のソース コードをざっと調べたところ、このメソッドはローカル リポジトリでのみ動作することがわかりました。

リモートリポジトリから最新のリビジョンを取得するために受信コマンドを使用する方法を知っている人はいますか? または、これを行う別の方法はありますか?

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

着信コマンドは、ローカルに存在しないリモート変更セットを含む「バンドル ファイル」をダウンロードします。インスタンスから、他のコマンドを呼び出すことができるインスタンスを取得するためにBundle使用できます。getOverlayRepository()Repository

リモート リポジトリで Incoming を使用する例を次に示します

Repository repoB = ..;
Bundle bundle = IncomingCommand.on(repoB).execute("http://localhost:" + port);
List<Changeset> changesets = bundle.getChangesets();
List<Changeset> heads = bundle.getOverlayRepository().heads();

「識別」の正確なセマンティクスはわかりませんが、バンドル オーバーレイ リポジトリのヘッドを一覧表示することで同様の効果が得られる可能性があります。

変更自体ではなく、ノード ID だけに関心がある場合は、Identify の方がはるかに効率的です。ここに機能リクエストを自由に投稿してください: https://bitbucket.org/aragost/javahg

于 2013-06-09T15:45:22.773 に答える