我想宣传我公司内部monorepo的想法。
我打算使用他们这样说:Git的子模块轨道分支用途不同
我有一个“父”回购拿着我们的堆栈的每个部件一个子模块,从而维护全球版本为整个堆栈(我们可以简单签上给出的分支的每个组件)
这听起来很完美的,因为我们仍然可以任意CI服务开箱(益处,我们仍然推自主混帐回购协议,该子模块)。
唯一的(可怕的)弱点这种做法,也就是如果做一个
git submodule update --remote
采用以下配置:
[submodule "commonLib"]
path = commonLib
url = [email protected]:org/commonLib.git
branch = MY_BRANCH
每个子模块有效地在正确检查,驱赶出局提交。
但是:他们都在分离的头
为什么有没有办法有效地使用gitsumodule设有分公司。 即:更新时,有效检出分支而不是此分支指向的提交? 是出于技术原因还是根本没有在git中实现?
感谢答案
我们遇到了同样的问题。问题是,每次更新子模块时,主存储库都需要更新子模块,这将使主站更新主站分支。最后,我们将核心项目组合成单个回购,解决了问题。子模块最适合第三方依赖项以及其他不经常更改的私有项目。理想情况下,每个子模块应该独立构建,因此它可以独立运行在CI上。 你可能会看看谷歌git回购,部分解决这个问题。 https://gerrit.googlesource.com/git-repo/ –
你能否详细说明你正在谈论的问题,我不确定以正确的方式理解它。 – Clement
据我所知,如果你使用分支追踪,checkouted子模块将直接指向正确的提交,但不指向指向该提交的分支。这意味着每个人在工作之前都必须注意检查正确的分支......而这又让我感到困扰。 – Clement