我们正在迁移到 git。我们有大量模块构成我们的产品,其中一些模块在产品之间共享。该产品由仅包含子模块的“瘦” super 存储库 (ssh://server/product.git) 表示:
[submodule "module1"]
path=module1
url=ssh://server/product/module1.git
[submodule "module2"]
path=module2
url=ssh://server/product/module2.git
...
我可以克隆 super 存储库并使用子模块并提交它们,然后将子模块提交到 super 存储库。
当我想引入另一层时,问题就来了。有两种基本场景(这可以结合起来进行更复杂的设置,但任何事情都应该是这些场景的组合):
作为一名开发人员,我克隆了一个中央存储库并开始工作。然后我想在将我的更改 merge 到中央存储库之前将我的代码提交到我们的持续集成服务器。我让 CI 服务器克隆我的 repo。这不起作用,CI 服务器将克隆我的 super 存储库,然后它将从中央存储库位置克隆子模块(因为这是它在 .gitmodules 中所说的)。
作为一个团队,我们希望在冲刺结束时将我们的代码 merge 到中央存储库之前,先建立一个集成存储库。出于同样的原因,这失败了。
我尝试为子模块指定相对 URL,但这也不起作用,因为当我们将第二层克隆到第三层时,相对 URL 相对于第二层存储库位置进行解析,但第二层子模块位置位于第二层 super 存储库中。
我可以两者兼得吗? Git 子模块和 n 层存储库结构?
最佳答案
相对链接在子模块中不起作用。使用 gitolite 来 stash 你所有的存储库。届时您的结构将起作用。
其他网址也有问题。例如 ..\someotherrepo
或 \\servername\reponame
甚至 file:///\\server\...
给子模块。
关于git - 如何使用子模块和 n 层 git 存储库策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6594005/