许多相互依赖的子模块的工作流程

时间:2012-08-31 02:39:49

标签: git git-submodules

在我的公司,我们有几个伪独立团队,每个团队拥有几个存储库(但有时会编辑另一个团队的代码)。大多数模块是相互依赖的,尽管最接近我们“基础设施”级别的模块基本上独立于其他模块。

目前我们有一堆脚本来处理诸如克隆和更新所有模块之类的事情,还需要维护模块的文本列表(在这种情况下大部分是自动化的)。显然,这是我相信/希望git submodule可以填补的一个角色。

我想要的是,至少能够:

使用类似于git clone main_repository的单个命令克隆整个源树。

使用与git pull类似的命令更新整个源树。看起来这只是git submodule foreach git pull,虽然我可能会为git submodule foreach git创建一个别名。我们当前的设置是并行执行此步骤(一次四个),我希望子模块设置执行相同操作。它看起来像更新子模块使它们显示为已更改(用于提交)。我可以理解这背后的逻辑,但是我们当前的系统在.gitignore中有伪子模块,因为你通常只关心你自己模块的变化。

我想要git grep的模拟作用于整个树。乍一看似乎git submodule foreach git grep hello会起作用,但是如果搜索字符串找到(我们有几个微小的子模块,所以这通常是真的)然后grep返回{{1}并且整个命令停止。

我喜欢差异和状态的类似有用的类似物。

我可以考虑一些解决方法,但是我们已经有一套hacky脚本执行我想要的大部分工作,我希望/想知道是否有一个很好的标准简单方法来执行它。

1 个答案:

答案 0 :(得分:1)

  

我可以考虑一些解决方法,但是我们已经有一套hacky脚本执行我想要的大部分工作,我希望/想知道是否有一个很好的标准简单方法来执行它。

不是子模块;不是你描述的用例。对于高度相互依赖,经常更新的代码,子模块的表现不是很好,正如各种SO answersthe web.中记录的那样,第二个链接(恰当地标题为“为什么你的公司不应该使用git子模块” “)列出了一些可能适合您的替代方案,其中最好的方法可能是repo,由谷歌构建的多git-repository管理工具。