我想创建一个包含多个子模块的公共仓库(裸仓库)。我希望不同的人克隆这个裸仓库,在任何子模块中进行更改。更新公共回购。但是,我意识到这很痛苦。我希望我的回购看起来如下:
我有四个独立的回购。 a.kernel b.rootfs c.apps d.modules。我将它们组合成一个名为“#34; build"”的superepo。从这个superepo,我做了一个裸的repo build.git,它在人们之间共享。
现在,如果有人克隆了裸仓库并在内核"子模块中进行了更改,那么他必须执行以下操作将更改推送到公共裸仓库。
这一切都很痛苦。这有点打败了我将4个回购捆绑成1个超级堆的目的。有没有更好的方法去做。 (我认为那些要做的人会被信任,并且被允许搞乱任何事情。)
答案 0 :(得分:2)
我有兴趣看到其他答案,但我担心你的问题会让你过分复杂。
其他开发人员无需克隆build
以更改其他独立的回购。他们的工作流程应该与此类似:
apps
。apps
进行更改。然后,您(或更好的是,定期或CI流程)只需在git submodule update
repo上执行build
然后构建。
请注意,开发人员不得提交任何内容(甚至触摸)build
repo。
在此示例中,每个子模块应该是一个完全独立的存储库。如果它们不是(意味着,如果您必须修改build
以便在子模块中应用任何更改),那么它们不应该是子模块,而应该是build
的子目录。
如果开发人员需要在本地构建,他们应该执行以下操作:
build
git submodule sync
以将更改应用于.gitmodules 他们的build
本地副本现在指向子模块的本地副本,而不是“祝福”服务器副本。这意味着他们可以使用build
来测试构建整个项目,包括他们的本地更改,而不会影响服务器上的稳定代码。 但是,用户无需(或推荐)将build
中的这些更改推送到服务器。使用GitHub,您可以通过不添加其他开发人员的公钥来防止意外到build
回购。