2011-06-24 6 views
35

私は本当にこのようなコマンドのサブモジュールでレポをフェッチする:どのようにして1つの行ですべてのサブモジュールに対してクローン - 再帰とチェックアウトのマスターをgitできますか?

git clone [email protected]:my_user/my_repo.git --recursive 

はしかし、サブモジュールはすべて、彼らが到着した「ノーブランチ」に設定され、私は一人一人の上に手動でチェックアウトマスターを持っています。再帰的にサブモジュールを引っ張り、ブランチをマスターに自動的に設定する方法はありますか?

答えて

5

おそらく、あなたはあなたの開発ワークフローに応じて、それが良い(またはより悪い)であってもよい、のgit - サブモジュールの代替としてgitslave検討すべきです。あなたの問題に特に関心を持つ場合、gitslaveはスーパープロジェクトのすべてのメンバを同じブランチに保ちます(異なるgit(gitslaveではない)コマンドがなければ、多くのコマンドが異なるブランチにあるときに警告します)。

Gitslaveは、スーパープロジェクトと同じくらい少ない時間でサブプロジェクトを制御して開発するとき、さらにはすべてのリポジトリにタグ付け、分岐、プッシュ、プルなどを同時に実行するときに便利です。あなたがサブプロジェクトを制御したり、より具体的であっても、サブプロジェクトの変更などの特定のリビジョンでサブプロジェクトを修正したくないとき

のgit - サブモジュールが良いです。

+0

はそれが可能に同期させる必要性をサブモジュールを指定することであり、ありません?すなわち、この挙動からいくつかのサブモジュールを排除するか? – Savageman

+0

@Savageman:gitslaveで奴隷のセット上でコマンドを実行するときのサブセットの選択を行うには、いくつかの方法があります:正規表現、サブセットを含むファイルなどはのgit - サブモジュールでは、それはあなたのように見える*かもしれない*のことができるようにコマンドラインで各サブモジュールの名前を明示的に指定することで行いますが、試していません。 –

+0

パーフェクト、答えに感謝します。 – Savageman

40

方法について:

git submodule update --init --recursive 

は、サブモジュール内のすべてのサブモジュールおよびサブモジュールを初期化します。これがマスターをチェックアウトするかどうかは分かりません。

+0

ありがとうございます。チェックアウトマスターではなく、すべてのサブモジュールだけです。私はそれに同意し、各サブモジュール –

+0

使用 'gitのサブモジュールのforeach --recursive Gitのチェックアウトmaster'を(正確である私が欲しかったもの)が、これは本当に迷惑です。特定のコミットがブランチに属している場合、この特定のコミットでこのブランチでサブモジュールがチェックアウトされないのはなぜですか? – lhe

22

質問は、あなたがマスターをチェックアウト理由です。サブモジュールは特定のshaに固定されています。サブモジュールのクローンがその特定のコミットに固定されている理由です。特定のシャーを指さないと、外部レポがあなたのビルドを簡単に破壊する可能性があります。あなたが何を望むのではないのは間違いない。意識的に更新してください。ビルドは可能な限り再現可能で、修正が必要です。

+1

のマスターをチェックアウトするための – Savageman

+4

分岐が移動できる間にコミットIDが固定されるためです。それらは2つの異なるもので、サブモジュールの2つの異なるスナップショットを指し示すことができます。 – vocaro

+0

私のチームと私は、サブプロジェクトの中央リポジトリを一種の_super_ repoとして使用して、プロジェクト全体をローカルに構築するために、より小さい関連モジュールリポジトリをすべて収集します。それはあなたが別のマシンに自分の環境を移動したい場合は特に、手動15+異なるリポジトリをダウンロードすることの手間を節約し、VMなど – Streetfights

45

あなたのサブモジュールを含むリポジトリをクローニングした後、次のコマンドを実行すると、一度にこれらのすべてにmasterブランチをチェックアウトします:

git submodule foreach --recursive git checkout master 
+0

まさに私は私のvimのvundleディレクトリ内のサブモジュールを更新するために探していました –

関連する問題