由于我希望区分自7天或10天以来我所做的所有更改,而没有看到其他团队成员的更改,所以我保留了一个克隆,说
c:\dev\proj1
然后我保留另一个克隆
c:\dev\proj2
所以我可以更改proj1
的代码,然后在另一个shell中,从中提取代码,并与其他团队成员合并,然后运行test。然后10天后,我仍然可以通过转到proj1
的shell并执行hg diff
或hg vdiff
来区分我和其他人创建的所有代码。
我认为这也可以通过使用分支来完成。这样的2个克隆是否与2个分支完全相同?一个优于其他方法的任何优势?
答案 0 :(得分:6)
简短的回答是:是的。
当您合并时,Mercurial并不关心更改集的来源。从这个意义上讲,当需要合并更改时,分支和克隆的工作效果会很好。
更好:您描述的工作流程完全 Chapter 3 of the Mercurial book中的策略。
分支机构的唯一优势是它们有一个名称,因此您没有更好的合并权利。如果您希望将这些proj2
更改分开,同时仍然从proj1推送它们,请为它们提供真正的分支。再次,在功能上,它们是相同的。
是的,这是DVCS的特征,而不是唯一的Mercurial。
答案 1 :(得分:1)
注意:我对git
比hg
更熟悉,但想法应该相同。
如果您更新两个克隆(它们都在编辑同一个分支),差异将变得明显,例如快速修复集成沙箱的错误。
正确的方法是让您拥有一个主题分支(您的第一个克隆),这是您进行开发的地方,另一个是集成(您的第二个克隆)。然后,您可以根据需要将更改从一个合并到另一个。如果您确实对集成分支进行了更改,您将知道它是在那里进行的。
答案 2 :(得分:1)
hg diff -r <startrev> -r <endrev>
可用于比较Mercurial历史中的任何两点。
示例历史:
rev author description
--- ------ ----------------------
@ 6 me Merge
|\
| o 5 others More other changes.
| |
| o 4 others Other changes.
| |
o | 3 me More of my changes.
| |
o | 2 me My changes.
|/
o 1 others More Common Changes
|
o 0 others Common Changes
如果修订 1 是原始克隆:
hg diff -r 1 -r 3
以仅显示这些更改。答案 3 :(得分:0)
为什么不简单地有两个分支? (分支/合并在像Hg或Git这样的DVCS中比在TFS或SVN等集中式VCS中更容易和更安全!)它会更加安全可靠。
这将变得明显,例如当你想要将两个分支/克隆合并在一起时。此外,从两个不同的物理位置编辑一个分支很容易导致混淆和错误。 Hg旨在避免这些情况。
托马斯
答案 4 :(得分:0)
正如一些答案已经指出的那样,分支(命名或匿名)通常比两个克隆更方便,因为你不必拉/推。
但是两个克隆具有完全物理分离的独特优势,因此您可以同时处理两件事情,并且在切换项目时不需要重建。
早些时候我问了一个question关于hg的并发开发,选项1是两个克隆,选项2是两个分支。