`hg log --follow -r N`列出所有修订而不是列出rev N

时间:2019-04-16 03:51:59

标签: mercurial

我需要帮助来了解 hg log --follow

$ hg log --help
...
 -f --follow              follow changeset history, or file history across
                          copies and renames

当我指定 -f 时,日志输出包括所有提交。我希望它返回与给定版本中更改的文件相关的提交。 这是 -f 标志的预期行为吗?如果是这样,它的用例是什么?

/tmp:$ hg --version
Mercurial Distributed SCM (version 4.5.3)
/tmp:$ mkdir hg-f
/tmp:$ cd hg-f
/tmp/hg-f:$ hg init
/tmp/hg-f:$ touch file0
/tmp/hg-f:$ hg add file0
/tmp/hg-f:$ hg commit -m 'file0 added'
/tmp/hg-f:$ touch foobar
/tmp/hg-f:$ hg add foobar
/tmp/hg-f:$ hg commit -m 'added foobar'
/tmp/hg-f:$ hg mv foobar barfoo
/tmp/hg-f:$ hg commit -m 'moved foobar'
/tmp/hg-f:$ hg log -v -r 2
changeset:   2:492bd607810c
tag:         tip
user:        'notalex'
date:        Tue Apr 16 09:10:25 2019 +0530
files:       barfoo foobar
description:
moved foobar

/tmp/hg-f:$ hg log -v -f -r 2
changeset:   2:492bd607810c
tag:         tip
user:        'notalex'
date:        Tue Apr 16 09:10:25 2019 +0530
files:       barfoo foobar
description:
moved foobar

changeset:   1:adfd98042078
user:        'notalex'
date:        Tue Apr 16 09:10:14 2019 +0530
files:       foobar
description:
added foobar

changeset:   0:64e5211bd019
user:        'notalex'
date:        Tue Apr 16 09:09:53 2019 +0530
files:       file0
description:
file0 added

1 个答案:

答案 0 :(得分:0)

您必须更全面,更仔细地阅读docs(我从来没有使用没有文件名的-f,因此-也是第一次阅读此相关段落)

  

显示文件历史记录时不遵循的重命名或复制历史记录   文件。使用-f /-跟随文件名来跟踪历史记录   重命名并复制。 --follow没有文件名将仅显示   开始修订的祖先

就DAG而言,

0 是2的祖先,确定。如果您想查看和了解-f的真实目的,只需比较(针对您的测试用例)的输出

hg log barfoohg log -f barfoo