mei*_*los 6 version-control diff mercurial dvcs rename
将文件移动到另一个目录后,我无法再显示两个修订版本之间的差异.例如:
hg init
touch a
hg add a
hg ci -m "Added a"
echo "Bli" >> a
hg ci -m "Bli"
echo "Bla" >> a
hg ci -m "Bla"
echo "Blub" >> a
hg ci -m "Blub"
hg diff -r 0 -r 1 a
Run Code Online (Sandbox Code Playgroud)
结果是:
diff -r 8603b08f5a64 -r 16675581549e a
--- a/a Mon Apr 23 09:03:25 2012 +0000
+++ b/a Mon Apr 23 09:03:25 2012 +0000
@@ -0,0 +1,1 @@
+Bli
Run Code Online (Sandbox Code Playgroud)
这是我的预期.但是,当我现在将文件"a"移动到目录"b"中时:
mkdir b
hg mv a b/a
hg ci -m "Moved a into b"
cd b
hg diff -r 0 -r 1 a
Run Code Online (Sandbox Code Playgroud)
这导致什么都没有(根本没有输出).我也尝试使用git Giff算法:
hg diff --git -r 0 -r 1 a
Run Code Online (Sandbox Code Playgroud)
同样,根本没有输出.日志似乎没问题:
hg log --follow a
Run Code Online (Sandbox Code Playgroud)
结果是:
changeset: 4:cb8185829bfd
tag: tip
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:08:12 2012 +0000
summary: Moved a into b
changeset: 3:4d1ba89885c3
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:03:26 2012 +0000
summary: Blub
changeset: 2:e9126dbb50b2
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:03:26 2012 +0000
summary: Bla
changeset: 1:16675581549e
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:03:25 2012 +0000
summary: Bli
changeset: 0:8603b08f5a64
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:03:25 2012 +0000
summary: Added a
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么差异在移动文件后不起作用?非常感谢您的帮助.
今天的Mercurial很难或不可能.我认为你能得到的最接近的是
hg log --follow --patch -r 1 a
Run Code Online (Sandbox Code Playgroud)
Mercurial将--follow在显示diff(--patch)之前向后跟踪副本().
通常,Mercurial不跟踪文件标识,它只跟踪文件名.当您按修订号查找信息时,Mercurial将首先查找修订,然后查找该修订中的任何文件名.所以hg cat -r 0 a会给你相同的结果
hg update -r 0
cat a
Run Code Online (Sandbox Code Playgroud)
即,结果独立于当前工作目录父级.