6

Mercurial の Bigfiles Extensionに似たものが git に必要です(注: git-bigfilesは知っていますが、それは関係ありません)。

基本的に、大きなバイナリを git リポジトリに保存したいのですが、クローンを作成するときに大きなバイナリのすべてのバージョンを取得したくはありません。これらの大きなファイルを含む特定のリビジョンをチェックアウトするときにのみ、大きなバイナリをダウンロードしたいと考えています。

4

1 に答える 1

5

考慮すべきいくつかのオプションは次のとおりです。

浅いクローン:リポジトリの浅いクローンを取得するための--depth <depth>パラメータを追加できます。git cloneたとえば、<depth>が1の場合、これは、クローンが最新のコミットに必要なファイルのみをフェッチすることを意味します。git cloneただし、そのようなリポジトリには、 manページで概説されているように、それらを使用して実行できる操作に厄介な制限があります。

        - 深さ
           指定された履歴に切り捨てられた浅いクローンを作成します
           リビジョンの数。浅いリポジトリにはいくつかの
           制限事項(クローンを作成したり、そこからフェッチしたり、プッシュしたり、プッシュしたりすることはできません
           に)、しかしあなたが最近だけに興味があるなら十分です
           長い歴史を持つ大規模なプロジェクトの歴史、そしてしたい
           修正をパッチとして送信します。

実際、このスレッドで説明されているように、これは誇張された表現です。浅いクローンからのプッシュが引き続き機能する便利な状況があり、ワークフローに適合する可能性があります。

Scott Chaconの「gitmedia」拡張機能:作成者は、この同様の質問への回答とgithubのREADME(http://github.com/schacon/git-media )でこれについて説明しています。

浅いサブモジュール:すべての大きなファイルを別のgitリポジトリに保持し、それを浅いサブモジュールとしてメインリポジトリに追加できます。これには、コードの浅いクローンの制限がなく、大きなファイルを含むリポジトリだけであるという利点があります。

(たとえば)gitフックから大きなファイルをrsyncするフックを追加することでこれを行う方法はいくつもありますが、そもそもこれらのファイルをgitの制御下に置きたいという正当な理由があると思います。

それがお役に立てば幸いです。

于 2010-07-02T08:10:03.213 に答える