我正在查看mercurial手册,第6章“使用多个分支”。在那里,作者指出,如果你有相同软件的单独版本/分支,那么以隐含的明显方式将软件的每个分支托管在一个单独的存储库中是有意义的。
我知道Mercurial支持标签(这是在subversion AFAIK中完成分支的方式)。为什么要使用不同的存储库而不是标签进行分支管理?
答案 0 :(得分:11)
Mercurial的标签不与Subversion的分支相同。在Subversion中,创建一个分支会创建一个单独的代码副本(至少我认为是硬链接),而Mercurial中的标记只是指向一个特定的提交。
前段时间我wrote about Mercurial的分支模型(其中分支与克隆是四个选项之一),也许你觉得它有用吗?
答案 1 :(得分:6)
在Mercurial中使用不同的存储库以及处理分支时存在问题是有好处的。
分支意味着多个头部,图形要复杂得多,甚至图形表示也可能无法容纳这么多复杂的路径......我甚至都不谈人脑!
另一方面,拥有多个存储库意味着每个存储库将具有更简单的结构,因此减轻了必须处理多个分支/合并的大脑创伤(无论如何,因为两个开发人员使用相同的变更集)并且同时发展。)
此外,使用多个存储库,您可以使用您正在使用的任何编辑器轻松读取/编辑给定存储库中的任何文件(如果您将工作目录保持相对于提示的最新状态)。
在subversion上,你必须处理多个分支,没有别的办法,你必须使用标签。
在Mercurial上,标签不应该移动(它不必要地引入变更集)并且分支机构是现成的:你总是有分支机构。但是,由于您可以拥有多个存储库,因此您将获得另一个维度。无论你是否使用它都是你的选择,无论如何它让我的生活变得更轻松。