使用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上 - 它可能是一个错误吗?
答案 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
对于理解这些事情也非常有帮助。