You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找Mercurial中由original.txt复制生成的所有copy.txt文件

如何在Mercurial中反向查找源文件的所有副本

你说得没错,hg log -r "follow('copy.txt')"只能追踪单个文件的正向历史(从源到副本),但要找出original.txt被复制成了哪些文件,我们可以用Mercurial revset的copiedfrom()函数——这就是专门用来做反向复制追踪的工具。

下面是两种实用的方法:

1. 一次性列出所有从original.txt复制而来的文件

运行这条命令,就能直接看到所有涉及original.txt作为源的复制操作,以及对应的目标文件:

hg log -r "copiedfrom('original.txt')" --template "{join(file_copies, '\n')}\n"

举个例子,输出会像这样:

original.txt -> copy1.txt
original.txt -> copy2.txt

如果只想看目标文件名(去掉源文件的重复内容),可以用这个更简洁的模板:

hg log -r "copiedfrom('original.txt')" --template "{foreach split(file_copies, ' -> '), parts} {parts[1]}\n"

2. 验证某个特定文件是否来自original.txt

如果你只是想确认某个文件是不是从original.txt复制的,可以用这条命令精准筛选:

hg log -r "copiedfrom('original.txt') and file('copy.txt')"

如果有结果返回,就说明copy.txt确实是original.txt的副本,同时还会显示对应的变更集详情。

小提示

  • 这个方法只追踪通过hg copy或hg mv(移动本质是复制+删除)创建的显式复制关系,手动复制文件后用hg add的不会被识别哦。
  • 命令会自动遍历仓库的所有分支历史,不需要额外添加分支参数。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:25:01