1

Mercurialリポジトリでブランチを使用していますが、デフォルトのブランチにマージした後、別々のブランチで行われた名前変更がpre-commitに表示されないことに気付きました。ただし、コミット後、hg diff -gコマンドを発行すると、名前変更が正しく表示されます。

次のスニペットは、私が何を意味するかを示しています。作成中の新しいリポジトリ。デフォルトで単一のファイルを作成します。次に、branch-oneというブランチを作成します。ブランチ1のファイルの名前を変更し、この変更をデフォルトにマージします。デフォルトにコミットする前に、変更が何であるかを確認するために差分を実行し、名前変更を取得せず、代わりに削除と追加を報告することに注意してください。しかし、コミット後、差分をもう一度確認すると、今回は名前の変更が正しく報告されます。

コミット前にdiffを正しく報告する方法はありますか?

D:\hgsource>hg init SO-question

D:\hgsource>cd SO-question

D:\hgsource\SO-question>echo test file content > test.txt

D:\hgsource\SO-question>hg commit -A -m "first commit"
adding test.txt

D:\hgsource\SO-question>hg branch branch-one
marked working directory as branch branch-one

D:\hgsource\SO-question>hg rename test.txt new-file.txt

D:\hgsource\SO-question>hg status
A new-file.txt
R test.txt

D:\hgsource\SO-question>hg commit -m "renamed file in branch-one"

D:\hgsource\SO-question>hg update default
1 files updated, 0 files merged, 1 files removed, 0 files unresolved

D:\hgsource\SO-question>hg merge branch-one
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)

D:\hgsource\SO-question>hg diff -g
diff --git a/new-file.txt b/new-file.txt
--- /dev/null
+++ b/new-file.txt
@@ -0,0 +1,1 @@
+test file content
diff --git a/test.txt b/test.txt
deleted file mode 100644
--- a/test.txt
+++ /dev/null
@@ -1,1 +0,0 @@
-test file content

D:\hgsource\SO-question>hg commit -m "merged from branch-one"

D:\hgsource\SO-question>hg diff -c tip
diff --git a/test.txt b/new-file.txt
rename from test.txt
rename to new-file.txt

私はWindowsXPのバージョン1.6.3を使用しています。

4

1 に答える 1

1

注:リビジョンが指定されていない場合、デフォルトで作業ディレクトリの最初の親チェンジセットと比較されるため、diffはマージに対して予期しない結果を生成する可能性があります。

http://linux.die.net/man/1/hg

于 2010-10-11T04:45:24.070 に答える