git に移行しています。製品を構成する多数のモジュールがあり、その一部は製品間で共有されています。製品は、サブモジュールのみを含む「シン」スーパー リポジトリ (ssh://server/product.git) で表されます。
[submodule "module1"]
path=module1
url=ssh://server/product/module1.git
[submodule "module2"]
path=module2
url=ssh://server/product/module2.git
...
スーパー リポジトリのクローンを作成し、サブモジュールを操作してコミットし、サブモジュールをスーパー リポジトリにコミットできます。
問題は、別の層を導入したい場合です。2 つの基本的なシナリオがあります (これを組み合わせてより複雑なセットアップを作成できますが、すべてのシナリオはこれらの組み合わせにする必要があります)。
開発者として、私は中央リポジトリのクローンを作成して作業しています。次に、変更を中央リポジトリにマージする前に、コードを継続的インテグレーション サーバーに送信します。CI サーバーにリポジトリのクローンを作成させます。これは機能しません。CI サーバーは私のスーパー リポジトリを複製し、中央リポジトリの場所からサブモジュールを複製します (これは .gitmodules に記載されているためです)。
チームとして、スプリントの終わりにコードを中央リポジトリにマージする前に、統合リポジトリを作成したいと考えています。同じ理由で、これは失敗します。
サブモジュールの相対 URL を指定しようとしましたが、これも機能しません。2 番目の層を 3 番目の層に複製すると、相対 URL は 2 番目の層のリポジトリの場所を基準にして解決されますが、2 番目の層のサブモジュールの場所は第 2 層のスーパー リポジトリ。
両方持ってもいいですか?Git サブモジュールと n 層リポジトリ構造?