我正在尝试确定人们如何使用"分支存储库",同时还使用subrepos.
假设我有一个repo Main包含一个解决方案文件(.NET),并填充了subrepos A,B,C:
/Main
- A
- B
- C
MainSolution.sln
Run Code Online (Sandbox Code Playgroud)
A,B和C在其他"主"回购之间共享时,非常紧密地集成到主项目中.因此,Main repo的一个主要特性将需要修改subrepos(即,它们是共享库,但是非常积极地开发).
现在是时候添加一个功能了.此功能对于一个人来说太大了,因此需要将代码推送到中央仓库,以便其他人可以提供帮助.我们还需要能够在功能开发开始之前回到最后的"稳定"代码,以防需要修复错误.我相信在这一点上我有两个选择:(1)在Main repo中创建一个命名分支,或者(2)创建一个Main的新克隆.由于存在subrepos,这两种选项都会产生不典型的反响.
选项1)我认为,创建一个命名分支将允许修改subrepos以进行提交/推送,但是只有在其Main的克隆中也更新到该分支的其他人将受到影响,因为跟踪了.hgsubstate文件.然而,subrepos将获得一个新的头,因此(可能)实验功能最终会被推到中央回购.我理解正确吗?
选项2)有许多倡导者"不使用命名分支,使用'分支存储库'",它们实际上是主要仓库的克隆,但命名不同并存在于中央服务器上.这对我来说有点吸引力,因为它似乎让事情分离(因此与同事脱离了灾难 - 而我自己! - 仍在学习Mercurial).但是当涉及子存储库时,这个工作流似乎完全被打破,因为创建主存储库的克隆不会创建子库的新的,分离的克隆.这是一个新的克隆,但它仍然指向相同的子目录,因此对它们所做的更改将找回返回子项目的方式!我意识到这是设计的,对于Mercurial而言,这是一件非常酷的事情(对我而言).但人们如何在子库中使用此分支存储库工作流?完全不可思议的是,对于每个功能/实验/版本/无论如何,我将在主仓库中创建一个新的克隆(在中央服务器上),并在子目录中创建克隆(在中央服务器上),AND修改所有.hgrc/.hgsub路径以指向正确的中央回购.
在这一点上,我只是想了解人们如何处理一个复杂的项目并使用subrepos与分支存储库.有什么想法吗?
我更喜欢命名分支,因为这些功能最终很可能会合并到默认分支中。切换分支比切换存储库要容易得多。
使用命名分支,您永远不需要担心意外地将不稳定的开发分支推送到稳定的存储库中。指定的分支已经存在,但除非开发人员要求,否则不会通过更新检索。
| 归档时间: |
|
| 查看次数: |
1766 次 |
| 最近记录: |