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赞赏的想法。
答案 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
。