2012-02-07 2 views
2

水銀を使用して、私はタイムラインのある時点でコミッターの1行が消えてしまって、それがなぜなのか説明できないという奇妙な問題に遭遇しました。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に改造を示していません!バリーはこのようにメアリーの変化をどのように飛び越えることができますか?

私はこのすべての仕組みを誤解していますか?私はCVSやSVNのようなものでかなり良い背景を持っていますが、DVCSは私の頭が傷つくようにします...誰かが説明できますか?

私たちは水銀の上にいるので、少し疑わしいです。1.7.1 - これはバグでしょうか?

答えて

6

これらは別々のヘッドで、172を基にしていない172です。グラフログの拡張機能を有効にして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 
| | 

これはそのチェンジ172は、それらを比較する際にチェンジ171.Thusに基づいていない、変更が他の場所で行われていることができます明確に示しています。あなたは先祖と子孫を比較していない、あなたはある程度のいとこを比較している。

171に171を導入していますが、172は171に基づいていないため、その行は追加されません。マージは実際にはにはを取得して、171と172(およびそれらの先祖が収束するまで)に基づいたチェンジセットを作成する必要があります。

マージしたいヘッドがもっとあるかもしれません。 hg headsを使って見ることができます。 hg serveもこのようなことを理解するのに非常に役立ちます。

+0

今、それは明らかですね。私はグラフを走らせていたが、両者が同じ行にあるので私が捨てていたと思うが、172のoは実際には別の行にあった...答えに感謝する。 – jambox

関連する問題