2011-02-19 10 views
10

JavaのリモートMercurialリポジトリから1つのファイルをプログラムでダウンロードする方法はありますか?私はvery similar question regarding gitに尋ねました。今私は水銀と同様の何かをすることができることを望んでいる。リモートのMercurialリポジトリから1つのファイルを取得

  1. 私は可能な限り帯域幅を使用しないことをお勧めします。好ましくは、その単一ファイルをダウンロードすることです。リポジトリをブラウズする必要はありません。すでにファイルのパスがあります。
  2. 私はファイルの履歴には関心がありません。私はその最新バージョンのみを必要とします。
  3. ファイルを出力するだけの解決策もあります。もちろん、ファイルをディスクに保存する必要はありません。私はそれを自分で行うことができます。
  4. 私は、他のアプリケーション(例えば、マシン上の水銀クライアントのインストール)に依存しないソリューションを好む。水銀のクライアント実装自体を含むJavaライブラリが最適です。しかし、他の方法がない場合は、私はうれしくhgを呼び出します。

Mercurialがどのように動作するかを理解してから、ローカルリポジトリに対してのみ作業できるようになりましたが、これは問題になることがあります。私は同様のGit SCMでこれを行うことができたので、私はMercurialの解決策も期待しています。

答えて

10

mercurial wire protocolには、リモートリポジトリから1つのファイルを読み取るコマンドがありません。そのため、hgコマンドラインクライアントはこれを実行できません。アイデアは、あなたは常にそのようなもののためにローカルクローンを作るべきです。

しかし、水銀用のさまざまなWebインターフェイスでは、通常、ファイルの内容を取得する方法があります。例えば、ビットバケットリポジトリのURLは次のようになります。hg serve Webインターフェイスに

http://bitbucket.org/<user>/<project>/raw/<revision>/<filename> 

は、URLは次のようになります。

http://<host>:<port>/raw-file/<revision>/<filename> 
+3

あなたはビットバケットにプライベートレポさんにアクセスする必要がある場合、彼らはAPIがありますhttp://confluence.atlassian.com/display/BITBUCKET/Using+the+をBitbucket + REST + API – dave

+2

'hg server'ウェブインターフェースでは、リビジョンを知る必要はありません。リビジョン番号の代わりに 'tip'を使うことができます。 – Benjamin

2

のBitbucket REST APIは、あなたがこのために必要なツールです。

https://api.bitbucket/1.0/repositories/{USER}/{REPO-NAME}/raw/tip/{PATH/TO/FILE}

そのdocsから例:ジャンゴから https://api.bitbucket.org/1.0/repositories/jespern/django-piston/raw/tip/piston/utils.py インポート時間をカール

$:

代わりにJSONとしてフォーマットされたファイルを取得するには、生の ファイルを取得することができます.httpインポートHttpResponseNotAllowed、 HttpResponseForbidden、HttpResponse、HttpResponseBadRequestからそれに加えてdjango.core ....

関連する問題