Mercurial:重命名后识别文件名

时间:2016-07-31 14:57:32

标签: mercurial

Mercurial会在重命名(hg mv $OLD $NEW)过程中跟踪文件的内容,以便hg annotate $NEW也显示以前对$OLD所做的按行更改与他们的原始身份。这很好。

但似乎找不到$OLD文件的名称似乎没有直接的方法,某些给定的行属于$NEW的祖先。 hg annot $NEW -r$REV仅适用于rename变更集。

当然,这些信息可以通过某种方式获取,例如: G。通过浏览hg log(不使用--follow)并使用某些hg log -r$RENAMEREV -g -p标识重命名(或点击hg serve的网络界面)。 但是这个“工作流程”不仅烦人且容易出错,而且[最重要的]它不是非交互式/可编写脚本的。

我的问题:有没有办法获得/构建

  • $NEW的文件名历史记录的一些列表(最好具有相应的修订范围)或
  • 提交行$LINE的文件的名称(hg annot的某种文件名选项)?

hg CLI或Python / hglib赞赏的想法。

1 个答案:

答案 0 :(得分:0)

{file_copies}模板中添加hg log关键字:

$ hg init demo
$ cd demo
$ touch a
$ hg ci -Am 'file a'
adding a
$ hg mv a b
$ hg ci -Am 'moved to file b'
$ hg log -r . -T"{file_copies}\n"
b (a)

当您设置status标志时,内置模板--copies将包含文件副本信息:

$ hg log -r 1 -Tstatus --copies
changeset:   1:b37952faaddc
tag:         tip
user:        Martijn Pieters <mjpieters@fb.com>
date:        Sun Jul 31 16:07:04 2016 +0100
summary:     moved to file b
files:
A b
  a
R a

所以文件b取自a

有关日志输出中可包含的更多内容,请参阅hg help template