Mercurial:重命名后识别文件名

Mercurial: Identify file name after rename

提问人:H. Weirauch 提问时间:7/31/2016 更新时间:7/31/2016 访问量:195

问:

Mercurial 在整个重命名过程中跟踪文件的内容 (),因此它还会显示以前使用其原始标识所做的逐行更改。这很好用。hg mv $OLD $NEWhg annotate $NEW$OLD

但是似乎没有直接的方法来找出文件的名称,某些给定的行属于 的祖先。 仅适用于变更集。$OLD$NEWhg annot $NEW -r$REVrename

当然,这些信息是可以以某种方式访问的,例如,通过爬行(没有)并用一些(或通过单击Web界面)来识别重命名。 但这种“工作流程”不仅令人讨厌且容易出错,而且[最重要的是]它不是非交互式/可编写脚本的。hg log--followhg log -r$RENAMEREV -g -phg serve

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

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

感谢 CLI 或 Python/hglib 中的想法。hg

善变

评论


答:

0赞 Martijn Pieters 7/31/2016 #1

在模板中包含关键字:{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 <[email protected]>
date:        Sun Jul 31 16:07:04 2016 +0100
summary:     moved to file b
files:
A b
  a
R a

所以文件取自 .ba

请参阅日志输出中可以包含的更多内容。hg help template