2012-05-04 12 views
5

私は大きなgitリポジトリの小さな部分にアクセスする必要がある竹のビルドを持っています。時間とディスクスペースを節約するために、ビルドに関連するリポジトリの部分だけをチェックアウトしたいと思います。私はすでに浅いチェックアウトについて知っています。私はそれ以上のことを行い、チェックアウトをただ一つのフォルダ(そしてその子孫)に制限したい。bambooビルド中にgitリポジトリの一部だけをチェックアウトするにはどうすればいいですか?

私は、このオプションを見て、私は、これは私が使用しなければならないものだと思うが、私はそれを動作させることができていない: enter image description here

私は私が欲しい最低限のチェックアウトをどのように行うことができますか?

答えて

2

最も簡単なのは、誰かがrepoタグをホストして、あなたが望む特定のツリーをコミットすることです。上流には例えば、

git tag quickie $(git commit-tree $(git rev-parse HEAD:path/to/dir) </dev/null) 

ます:

git fetch upstream quickie 

あなたは自動的にブランチのサブツリーを追跡するために、上流のレポをしたい場合は、(の適当に復号化されたバージョンを行うことができます)このようなもの:

sed -n 's,^[^ ]* [^ ]* refs/heads/master$,git update-ref refs/heads/master-subtree -m "Auto-tracking master" $(git commit-tree master:subtree -m "Auto-tracking master subtree" $(test -r refs/heads/master-subtree \&\& echo -p refs/heads/master-subtree)),p' | sh -x 

これは見た目よりも簡単です。このお試しください:

mkdir ~/tryitout && cd ~/tryitout && git init foo && git init bar --bare 
cat >bar/hooks/post-receive <<'EOF' 
sed -n 's,^[^ ]* [^ ]* refs/heads/master$,git update-ref refs/heads/master-subtree -m "Auto-tracking master" $(git commit-tree master:subtree -m "Auto-tracking master subtree" $(test -r refs/heads/master-subtree \&\& echo -p refs/heads/master-subtree)),p' | sh -x 
EOF 
chmod a+x bar/hooks/post-receive 
cd foo 
mkdir subtree && touch subtree/oooo && git add . && git commit -am- 
git push ../bar master 

後期更新 -

あなたが他のレポでファイルシステムを共有している場合は、あなたがこれを行うことができます:

git clone --no-checkout /path/to/local/repo/.git subtree 
cd subtree 
git commit-tree origin/rev:subtree </dev/null | xargs git checkout -B peek 

を、あなたがで周りにバウンスすることができますインクルード、原点/次:インクルード、原点/ v1.4:どこかにあるもの、何でも。

私は大規模なreposのための "空の"ブランチを持っています。 Gitは空のディレクトリの特別なケースを扱います:

git mktree </dev/null | xargs git commit-tree | xargs git checkout -b empty 
+1

p.s. HEADはもちろんあなたが望むどんな回転でもかまいません – jthill

+0

しかし、タグを維持する必要はありませんか?つまり、レポの関連部分が変更された場合、その変更をチェリーピックする必要があります。あるいは私は誤解していますか? –

+0

@AndrewEisenbergあなたはフェッチしようとしていることについての参考情報が必要です。アップストリームでサブツリーを自動追跡する方法を示す行を追加します – jthill

関連する問題