使用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
Run Code Online (Sandbox Code Playgroud)
正在运行:hg diff -r 171 -r 172为abc.py提供此内容(标题省略):
print "context line1"
- print "i need this line!"
print "context line2"
Run Code Online (Sandbox Code Playgroud)
有问题的mod print "i need this line!肯定是在171中引入的:opq123但它在172中再次出现:xyz123,
但76和172之间的差异显示abc.py没有mods!巴里如何能够像这样超越玛丽的变化?
我只是误解了这一切是如何运作的?我在CVS和SVN这样的事情上有相当不错的背景,但DVCS有时让我头疼......有人可以解释一下吗?
我有点怀疑它是因为我们在mercurial 1.7.1 - 它可能是一个错误吗?
这些是单独的头,172不是基于171.图表,如果您启用并运行graphlog扩展hg glog,或者如果您运行hg serve,可以从hgweb直观地看到,在浏览器中打开它并单击"图形" "链接,显示它可能比变更集的"父"值更清楚.
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
| |
Run Code Online (Sandbox Code Playgroud)
这清楚地表明变更集172不是基于变更集171.因此,在比较它们时,变化可以在其他地方发生.你不是在比较一个祖先和后代,你在某种程度上比较堂兄弟.
因此,当您在171中引入它时,因为172不是基于171,所以它不会添加该行.实际上,合并是获得更改所需要的,创建一个基于171和172(以及它们的祖先,直到它们收敛)的变更集.
您可能有更多想要合并的头; 你可以hg heads用来看看它们.hg serve也可以非常有助于理解这些事情.