水银差异不动后,工作/重命名(Mercurial diff not working after mo

2019-09-16 16:15发布

移动文件到另一个目录后,我无法再显示两个版本之间的差异。 例如:

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

结果是:

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

这是我所期待的。 然而,当我现在移动的文件“一”到目录“B”:

mkdir b
hg mv a b/a
hg ci -m "Moved a into b"
cd b
hg diff -r 0 -r 1 a

这导致到什么(没有输出)。 我还试图用git的吉夫算法中:

hg diff --git -r 0 -r 1 a

再次,有没有输出。 该日志似乎是OK:

hg log --follow a

结果是:

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

有一个人任何想法,为什么DIFF不移动文件后的工作? 你的帮助是极大的赞赏。

Answer 1:

这是今天的水银困难或不可能。 我认为你可以得到最接近的是

hg log --follow --patch -r 1 a

其中将水银(向后跟踪拷贝--follow )示出了差异(前--patch )。

在一般情况下,水银不会跟踪文件的身份 ,只跟踪文件名 。 当你查找修订号信息,水银会首先寻找的修订,然后查找在修订版中的文件名。 所以hg cat -r 0 a会给你的结果相同

hg update -r 0
cat a

即,结果是独立于当前工作目录父。



Answer 2:

我认为,这是因为b/a如果执行该命令不修订1或修订0存在hg diff -r 0 -r 4从内b应该产生预期的输出文件夹。

如果执行hg diff -r 0 -r 1 a从工作的根复制它也应该表现出预期的输出。



文章来源: Mercurial diff not working after move/rename