6

Javaでリモートgitリポジトリからプログラムで単一のファイルをダウンロードする方法はありますか?

  1. 私は、できるだけ少ない帯域幅を使用するソリューションを好みます。できれば、その単一のファイルのみをダウンロードすることをお勧めします。リポジトリを参照する必要はありません。すでにファイルのパスがあります。
  2. 私は他のアプリケーションに依存しないソリューションを好みます(たとえば、マシンへの別のgitクライアントのインストール)。gitクライアントの実装自体を含むJavaライブラリが最適です。

私はSVNKitを使用してSubversionと同様のことを行うことができ、同様のことを行うことができる可能性のあるgit( eclipseのJGit )の純粋なJava実装があることを確認したので、肯定的な答えがあることを願っています。ただし、gitがどのように機能するか(ローカルリポジトリからの更新のみを許可する)について私が理解していることから、これは問題になる可能性があります。

4

3 に答える 3

10

git は、リモート リポジトリからの単一ファイル アクセス用に設計されているわけではありませんがgit archive、これを悪用することはできます。欠点は、必要なブロブだけでなく、「ツリー」をダウンロードする必要があることです。

例えば

git archive --remote=url://to.git.repo branch path/to/dir | tar -x file

別の方法として、リモート リポジトリに gitweb をセットアップしている場合は、単純な curl または wget コマンドを使用して、任意のファイルを「生」形式でダウンロードできます。

于 2010-09-04T13:21:31.460 に答える
3

リモート リポジトリにはどのようなアクセス権がありますか? SSH経由ですか、コマンドを呼び出すことはできますか? その場合は、 を呼び出すだけです。git show HEAD:$path_to_file

そのマシンでコマンドを呼び出すことができない場合でも、これを行うことは完全に可能ですが、Git リポジトリの形式を理解する必要があります。(設計上非常にシンプルなので、思ったよりも怖くありません。たとえば、Subversion とは異なり、リポジトリ形式はブラック ボックスとして意図されていません。)

于 2010-09-04T13:10:20.280 に答える
0

git -clone(1) を引用します。

--深さの深さ

指定されたリビジョン数に切り捨てられた履歴を持つ浅いクローンを作成します。浅いリポジトリには多くの制限があります (クローンやフェッチ、プッシュはできません) が、長い歴史を持つ大規模なプロジェクトの最近の履歴にのみ関心があり、そうしたい場合には十分です。パッチとして修正を送信します。

したがって、粒度はディレクトリですが、リビジョン履歴を制限できます。

于 2010-09-04T12:20:03.263 に答える