4

最近、ソース ファイルの特定の行を担当する変更セットを追跡する際に問題が発生しました。hg blame私が興味を持っていたブランチにマージされたことのないリビジョンを私に与えていました。

以前に同様の無関係な変更が行われた場合、Mercurial はそれを元のリビジョンとして表示することを発見しました。これはバグですか、それともこのように動作するはずですか? 後者の場合、その理由を説明していただけますか。

最小限の例を次に示します。

hg init test
cd test

# Create a new file that has 3 lines
echo "111\n222\n333" > test.txt
hg commit -Am "Original file"

# Append "444" to the file
echo "444" >> test.txt
hg commit -m "Abandoned change"

# Go back to the first revision and append the same "444" to the file
hg up 0
echo "444" >> test.txt
hg commit -m "Actual change"

レポは次のようになります。

$ hg glog
@  changeset:   2:1b16b07e058e
|  tag:         tip
|  parent:      0:e58635de081c
|  user:        Nobody <nobody@nowhere.org>
|  date:        Tue Nov 20 17:17:41 2012 +0100
|  summary:     Actual change
|
| o  changeset:   1:b02ee64b2e2d
|/   user:        Nobody <nobody@nowhere.org>
|    date:        Tue Nov 20 17:17:41 2012 +0100
|    summary:     Abandoned change
|
o  changeset:   0:e58635de081c
   user:        Nobody <nobody@nowhere.org>
   date:        Tue Nov 20 17:17:41 2012 +0100
   summary:     Original file

実行するhg blameと、チェンジセット 1 ではなく、チェンジセット 2 からの最後の行が表示されることが期待されます。

$ hg blame test.txt
0: 111
0: 222
0: 333
1: 444
4

1 に答える 1

4

これは意図した動作ではありません。Bug 1839が発生します。

于 2012-11-20T16:55:00.280 に答える