在Mercurial中,如果没有合并,线条如何消失?

时间:2012-02-07 11:48:53

标签: mercurial

使用mercurial,我遇到了一个奇怪的问题,即一个提交者的一行在时间轴的某个点消失了,我无法解释原因。

日志看起来像这样:

changeset:   172:xyz123
parent:      76:pqr345
user:        barry baggings
date:        Mon Jan 16 0:12:43 2012 +0000
summary:     blah blah blah

changeset:   171:opq123
parent:      165:abc234
user:        mary moggings
date:        Mon Feb 01 1:12:41 2012 +0000
summary:     naw naw naw

正在运行:hg diff -r 171 -r 172为abc.py(标题省略)提供此内容:

print "context line1"
- print "i need this line!"
print "context line2"

问题print "i need this line!中的mod肯定是在171中引入的:opq123但它在172中再次出现:xyz123,

但76和172之间的差异显示abc.py没有mods!巴里如何能够像这样超越玛丽的变化?

我只是误解了这一切是如何运作的?我在CVS和SVN这样的事情上有相当不错的背景,但DVCS有时让我头疼......有人可以解释一下吗?

我有点怀疑这是因为我们在mercurial 1.7.1上 - 它可能是一个错误吗?

1 个答案:

答案 0 :(得分:6)

这些是单独的头,172不是基于171.图表,如果您启用了graphlog扩展并生成hg glog,或者如果您运行{{1},您可以从hgweb直观地看到},在浏览器中打开它并单击“图形”链接,显示它可能比变更集的“父”值更清楚。

hg serve

这清楚地表明变更集172不是基于变更集171。因此,在比较它们时,变化可能发生在其他地方。你不是在比较祖先和后代,而是在某种程度上比较表兄弟。

所以,当你在171中引入它时,因为172不是基于171,所以它不会添加该行。实际上,合并是获取更改所需的内容,以创建一个基于171和172(及其祖先,直到它们收敛)的变更集。

你可能有更多想要合并的头;您可以使用o changeset: 172:xyz123 | parent: 76:pqr345 | user: barry baggings | date: Mon Jan 16 0:12:43 2012 +0000 | summary: blah blah blah | | o changeset: 171:opq123 | | parent: 165:abc234 | | user: mary moggings | | date: Mon Feb 01 1:12:41 2012 +0000 | | summary: naw naw naw | | 来查看它们。 hg heads对于理解这些事情也非常有帮助。