5

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 つの基本的なシナリオがあります (これを組み合わせてより複雑なセットアップを作成できますが、すべてのシナリオはこれらの組み合わせにする必要があります)。

  1. 開発者として、私は中央リポジトリのクローンを作成して作業しています。次に、変更を中央リポジトリにマージする前に、コードを継続的インテグレーション サーバーに送信します。CI サーバーにリポジトリのクローンを作成させます。これは機能しません。CI サーバーは私のスーパー リポジトリを複製し、中央リポジトリの場所からサブモジュールを複製します (これは .gitmodules に記載されているためです)。

  2. チームとして、スプリントの終わりにコードを中央リポジトリにマージする前に、統合リポジトリを作成したいと考えています。同じ理由で、これは失敗します。

サブモジュールの相対 URL を指定しようとしましたが、これも機能しません。2 番目の層を 3 番目の層に複製すると、相対 URL は 2 番目の層のリポジトリの場所を基準にして解決されますが、2 番目の層のサブモジュールの場所は第 2 層のスーパー リポジトリ。

両方持ってもいいですか?Git サブモジュールと n 層リポジトリ構造?

4

1 に答える 1

0

相対リンクはサブモジュールでは機能しません。すべてのリポジトリを収容するためにgitoliteを使用してください。その後、構造が機能します。

他のURLにも問題がありました。例としては、サブモジュールのような、または..\someotherrepoサブモジュールに指定されたURLがあります。\\servername\reponamefile:///\\server\...

于 2011-07-08T00:38:30.277 に答える