ハードリンクに基づいて多数の "読み取り専用" gitリポジトリを取得する方法を知っている人はいますか?言い換えれば、〜500MBのレポの後続の作業ディレクトリをハードリンクにするだけで、ほんの数KBにすることができます。ハードリンク付きの単一のレポからの複数のgitチェックアウト?
これは、私の精神的な不満のフィードバックはありがたいです。
さて、背景:私は、私が打つことができるようにしたいQAツールの構築に取り組んでいます
:これらのプロジェクトが含まれたよう
1f381de1.somesite.com
9e010d42.somesite.com
...etc
をダイナミック(例えばphp
)例えば、apacheでホストされているファイルの場合は、出力をすべてgit show
のようにパイプすることはできません。または、私はうれしく思います(誰かがこれを行う可能性のある方法を知っていれば、
レポのすべてのライブファイルをコピーするため、ヒットしたいバージョンごとにgit clone
またはgit-new-workdir
を実行したくありません。私はこのプロジェクトを常にガベージコレクションしたくないので、一度に100以上のバージョンがアクティブになる可能性があります。私は〜500MBのプロジェクトを100回コピーしたくありません。
ハードリンクに基づいていくつかの読み取り専用チェックアウトを取得できるツールが理想的です。ない場合は、私の現在の考え方は次のとおりです。
- チェックアウトリポジトリ
- が
- 必要に応じて
- は私が新しいバージョンたい
.pack
ファイルを解凍し、「圧縮されていないオブジェクト」フォルダを作る: を- ディレクトリを作成
- ツリーwiのコミットログを解凍します。
- は
- がそれぞれ圧縮されていないオブジェクトに私の新しいフォルダにハードリンクを作成し、上記のステップを繰り返して、必要に応じてツリーを歩く(それがまだ存在しない場合)
git catfile -p
番目 - は、「圧縮されていないオブジェクト」フォルダに各オブジェクトを解凍します
最終的な結果は私がそのディレクトリにいくつかのファイルを指しているハードリンクされている新しいレジ内のすべてのファイルと.git/objects
で使用するすべてのファイルの圧縮されていないバージョンを持っているということです。
作業ツリーにソフトリンクを作成するスクリプトを作成できないのは何故ですか? –
私は別のツリーのチェックアウトを同時に必要とするので、 –
'git --work-tree = somewhere/else checkout some-other-branch - ?' –