2012-01-23 10 views
2

ハードリンクに基づいて多数の "読み取り専用" 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で使用するすべてのファイルの圧縮されていないバージョンを持っているということです。

+0

作業ツリーにソフトリンクを作成するスクリプトを作成できないのは何故ですか? –

+0

私は別のツリーのチェックアウトを同時に必要とするので、 –

+0

'git --work-tree = somewhere/else checkout some-other-branch - ?' –

答えて

1

はこのを見ると、私は私が話を聞いたが、実際には使わない、またはそれは本当に何だったのまわりで私の頭をラップするためにわざわざ決してきたFUSE渡って走りました。それは、私が不可能だと思ったことをすることを可能にします - プロキシgit show OSレベルのファイル要求へのコマンド。

関連する問題