私の会社には疑似独立したチームがいくつかあり、それぞれが複数のリポジトリを所有しています (ただし、別のチームのコードを編集することもあります)。ほとんどのモジュールは相互に依存していますが、「インフラストラクチャ」レベルに最も近いモジュールは基本的に他のモジュールから独立しています。
現在、すべてのモジュールのクローン作成や更新などを処理するスクリプトが多数あり、モジュールのテキスト リストのメンテナンス (この場合はほとんど自動化されています) も必要です。明らかに、これは私が信じている/果たすことgit submodule
ができると期待している役割です。
私が望むのは、少なくとも次の能力です。
に似た 1 つのコマンドでソース ツリー全体のクローンを作成しgit clone main_repository
ます。
に似たコマンドでソース ツリー全体を更新しgit pull
ます。これは単に のように見えますがgit submodule foreach git pull
、おそらく のエイリアスを作成しgit submodule foreach git
ます。現在のセットアップでは、このステップを並行して (一度に 4 つ) 実行します。サブモジュールのセットアップでも同じことを行いたいと思います。また、サブモジュールを更新すると、(コミットのために) 変更されたものとして表示されるように見えます。この背後にあるロジックは理解できますが、通常は自分のモジュールの変更のみを気にするため、現在のシステムには .gitignore に疑似サブモジュールがあります。
git grep
ツリー全体で機能するアナログが欲しいです。一見git submodule foreach git grep hello
うまくいくように見えましたが、検索文字列が見つからない場合(いくつかの小さなサブモジュールがあるため、通常はこれが当てはまります)、grep が戻り1
、コマンド全体が停止します。
diff と status にも同様に便利な類似物が欲しいです。
これの一部についていくつかの回避策を考えることができますが、私が望むことのほとんどを実行する一連のハッキー スクリプトが既にあります。