了解Mercurial合并变更集

时间:2011-04-21 03:40:40

标签: mercurial merge

如果我的回购中有两个头--C和D有B的共同父 - 我做了hg merge然后是hg commit,那个合并变更集究竟是什么?我试图理解我所看到的内容hg diff -c xyz其中xyz是合并变更集的ID。

变更集是否会显示在C和D中修改的所有文件的差异与公共父资源库B中存在的那些文件的状态?

2 个答案:

答案 0 :(得分:3)

合并提交有两个父项,因此在运行差异时,了解要反对的父项非常重要。

hg diff -c <changeset>显示变更集相对于第一个父变换的差异。

来自hg help diff

  

diff可能会产生意外结果   对于合并,因为它将默认为   与工作相比   目录的第一个父变更集if   没有指定修订版。

要针对特定​​父级进行区分,最好提供合并变更集和更正父级的显式修订(例如hg diff -r <parent> -r <merge changeset>

答案 1 :(得分:2)

Mercurial实现directed acyclic graph,因此合并变更集取决于您的来源。当你输入“hg merge”时,它会假定为“tip”(就像hg pull假定你克隆你的头的根存储库一样)如果输入“hg heads”,你可以看到哪一个是提示。当您执行此合并时,假设C为提示,您将合并D中的更改。