如果我的回购中有两个头--C和D有B的共同父 - 我做了hg merge
然后是hg commit
,那个合并变更集究竟是什么?我试图理解我所看到的内容hg diff -c xyz
其中xyz是合并变更集的ID。
变更集是否会显示在C和D中修改的所有文件的差异与公共父资源库B中存在的那些文件的状态?
答案 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中的更改。