查找在Mercurial中复制的文件

问题描述 投票:1回答:1

我注意到文件original.txt中有一个错误。然后如何找到通过copy.txt创建的所有文件hg copy original.txt copy.txt

我看着Mercurial revset。唯一提到“副本”的地方是:

"follow([file[, startrev]])""::."的别名(工作目录的第一个父项的祖先)。如果指定了file模式,则将遵循startrev给定的修订中与给定模式匹配的文件的历史记录,包括副本。

显然使用了hg log -r "follow('copy.txt')"之类的东西,我发现它是从[[from original.txt复制的,但是不是相反的(original.txt是从[[to复制的)。

如何找到复制的文件?
mercurial
1个回答
1
投票
肮脏的方式

((当信号字符串合并到新文件时,可能会使FP在合并集上不做任何校正)

如果您在original.txt中具有唯一数据(在回购中的

所有文件

中),则可以为该字符串grep回购,例如hg grep -ldq "ID"

更自然的方式

因为更改集的重命名文件是“删除旧文件,添加新文件,所以可以

在[reset]中以removes(original.txt)形式使用“ removes(pattern)”谓词>

  • 将特殊模板-T"{file_copies}\n"用于日志
  • hg log -r "removes(original.txt)" -T"{file_copies}\n" original.txt
  • revset可以作为参数化的revsetalias重用(对于[[any

文件),带有revset + template的日志也可以转换为别名

添加

对于“仅复制”变更集的低噪声输出,可以使用修改后的revset(TBT !,我太懒了)

-r“!modify(original.txt)”

© www.soinside.com 2019 - 2024. All rights reserved.