如何在大型团队项目中组织mercurial仓库/子仓库
问题描述:
在工作中,我们需要重新组织我们的版本控制系统。如何在大型团队项目中组织mercurial仓库/子仓库
项目的结构如下:
2队:TEAM1和的Team2
一)两个TEAM1和的Team2在模块一个工作。
b)中TEAM1也适用于乙和Ç,这取决于甲。
C)的Team2也适用于d,这取决于一个但不上乙和ç
我们不想的Team2物理对他们的本地机器B和C(属于Team1)a nd同时我们不想Team1有D。
目标是及时完成项目的快照,即我们希望随时跟踪并回滚到整个项目的给定版本。
我们想过使用Mercurial subrepos,但似乎不可能(可能)让一个团队忽略另一个团队的subrepos。每个人都必须提取每个子文件。它是否正确?
如果是这样,我们该如何克服?我们是否真的需要拥有三个完全独立的存储库,并手动跟踪兼容版本的代码A与B + C以及单独的D?
我们担心这样的手动跟踪随着时间的推移很容易出错。
答
您可以使用subrepos和组织:
- TEAM1使用主回购X与subrepos 一个,乙,并Ç。
- 的Team2使用主回购ý与subrepos 甲和d。
如果B和C是不相关的,你可能想:
- TEAM1使用主回购乙与subrepo 一个。
- Team1使用主回购C与subrepo A。
- Team2使用主回购D与subrepo A。
如果更改了团队可以选择是否以及何时将A subrepo更新为新更改并将其提交给主仓库。
答
团队很容易忽视其他团队的子报表。他们只需要在父回购中使用不同的分支,而.hgsub文件只包含该分支所需的子报表。
我建议不必多主回购,但只有一个主回购这些三个分支:
- 分公司“TEAM1”在其.hgsub文件只subrepos A,B和C
- Branch“Team2”在其.hgsub文件中只有subrepos A和D.
- Branch“All”(或默认)在其.hgsub文件中具有A,B,C和D.
当团队1从分支team1中检出时,他们得到A,B和C.团队2从分支team2中检出,他们只获得A和D.整个项目的经理使用分支“All “(或默认),并将所有回购A,B,C和D更新为适当的版本,然后提交,将所有回购版本捆绑在一起,并获得所需的完整快照。
简单而优雅,但我无法弄清楚自己,谢谢! – xanz