2013-02-13 14 views
16

私はいくつかのサードパーティライブラリを使用するプロジェクトを持っています。Gitサブツリー:リポジトリ全体の代わりにサブリポジトリのみを使用する

MY_COOL_PROJECT 
    3rdParty 
     LIB_1 
     LIB_2 
    Source 
     MY_PROJECT 

ライブラリは、別のリポジトリに格納されています。 だから、ディレクトリ構造は次のようなものです。私は私が行うことができますサードパーティのライブラリのためのgitリポジトリを使用したいのであれば、:

git subtree add --prefix 3rdParty/LIB_1 --squash http://My3rdPartyLibs.com/lib1.git master 

しかし、lib1.gitリポジトリ内の私が必要とする唯一のbinフォルダがあります。ドキュメント、サンプルなどのフォルダも含まれています。リポジトリ全体ではなく、リポジトリとlib1/binフォルダとの間でのみ「接続」できますか?それも可能ですか?

+1

ずに働いていなかった何らかの理由であなたがまばらなサブツリーのためのソリューションを見つけたのを使用していたサブモジュールを使用して、ため? (現在の答えはそれを完全には解決しないようです) – inger

答えて

7

通常、完全にクローン/ロードされるためにgit repoが実行されます。

あなたsparse checkout(Git1.7 +)のために行くことができますが、任意の変更を行い、それらの背中を押すのに意図しない場合にのみ。 this exampleを参照してください:

$ git init 
Initialized empty Git repository in /tmp/si-sandbox/.git/ 
(master) $ git config core.sparsecheckout true 
(master) $ echo message-store/ >> .git/info/sparse-checkout 
(master) $ git remote add origin git://github.com/iwein/Spring-Integration-Sandbox.git 
(master) $ git pull origin master 

OP user2070238reportsは:

これは、いくつかの変更で働いていました。
私は

echo MY_FOLDER/* >> .git/info/modules/MY_MODULE/sparse-checkout 

そしてMY_FOLDER/一部が*

+1

ありがとう、これはいくつかの変更を加えて機能しました。 私は 'エコーMY_FOLDERを使用していたサブモジュールを使用し、そのため/ * >> .git /情報/モジュール/ MY_MODULE /スパース-checkout' そして、いくつかの理由でMY_FOLDER /部分は*なしで働いていなかった – user2070238

+0

@ user2070238優れた。より視認性の高い答えをあなたのコメントに追加しました。 – VonC

+1

元の質問は「git subtree」に関するものでした。この答えは、ソリューションのほとんどの半分ではなく、スパースチェックアウトをカバーしていますか? (多分偶数ではないかもしれない) – inger

関連する問題