查找在 Mercurial 中复制的文件
Find files copied in Mercurial
我注意到文件 original.txt
中有一个错误。我怎样才能找到通过 hg copy original.txt copy.txt
创建的所有文件 copy.txt
?
我看了Mercurial revset。唯一提到 "copies" 的时间是:
"follow([file[, startrev]])"
An alias for "::."
(ancestors of the working directory's first parent). If file
pattern is specified, the histories of files matching given pattern in the revision given by startrev
are followed, including copies.
所以显然使用 hg log -r "follow('copy.txt')"
之类的东西我可以发现它是从 original.txt
复制的,但不是相反的(其中 original.txt
被复制 到 ).
如何找到复制的文件?
肮脏的方式
(当信号串合并到新文件时,可能会在不对合并集进行更正的情况下给出 FP)
如果您在 original.txt
中有唯一数据(跨越 回购中的所有文件 ),您可以像 hg grep -ldq "ID"
[=15= 这样的字符串使用 grep 回购]
更自然的方式
因为更改集的重命名文件是 "delete old file, add new",您可以
- 在
removes(original.txt)
形式的 revset 中使用 "removes(pattern)" 谓词
对日志使用特殊模板-T"{file_copies}\n"
hg log -r "removes(original.txt)" -T"{file_copies}\n" original.txt
revset 可以作为参数化 revsetalias 重复使用(对于 any 文件),使用 revset+template 的日志也可以转换为别名
加法
为了减少 "just copy" 变更集的噪音输出,可以使用修改过的 revset(TBT!,我太懒了)
-r“!修改(original.txt)”
我注意到文件 original.txt
中有一个错误。我怎样才能找到通过 hg copy original.txt copy.txt
创建的所有文件 copy.txt
?
我看了Mercurial revset。唯一提到 "copies" 的时间是:
"follow([file[, startrev]])"
An alias for"::."
(ancestors of the working directory's first parent). Iffile
pattern is specified, the histories of files matching given pattern in the revision given bystartrev
are followed, including copies.
所以显然使用 hg log -r "follow('copy.txt')"
之类的东西我可以发现它是从 original.txt
复制的,但不是相反的(其中 original.txt
被复制 到 ).
如何找到复制的文件?
肮脏的方式
(当信号串合并到新文件时,可能会在不对合并集进行更正的情况下给出 FP)
如果您在 original.txt
中有唯一数据(跨越 回购中的所有文件 ),您可以像 hg grep -ldq "ID"
[=15= 这样的字符串使用 grep 回购]
更自然的方式
因为更改集的重命名文件是 "delete old file, add new",您可以
- 在
removes(original.txt)
形式的 revset 中使用 "removes(pattern)" 谓词
对日志使用特殊模板
-T"{file_copies}\n"
hg log -r "removes(original.txt)" -T"{file_copies}\n" original.txt
revset 可以作为参数化 revsetalias 重复使用(对于 any 文件),使用 revset+template 的日志也可以转换为别名
加法
为了减少 "just copy" 变更集的噪音输出,可以使用修改过的 revset(TBT!,我太懒了)
-r“!修改(original.txt)”