给定一个大的代码库和两个修订或修改(例如,本地'来源'和目标),它们可能会或可能不会共享最近的父级,并且通常包含大量不相关的文件增量;
如何生成diff输出以比较仅在源revset本身中修改的文件的更改?
(这应该是祖先之间的差异;但是对于revset中包含的文件,只有 。)
使用hg diff -r target -r source
显示所有祖先中的更改,即使对于源sevision未修改的文件也是如此。
此外,这应该在不知道目录结构的情况下完成。
答案 0 :(得分:1)
如果我理解正确,您希望在转化source
和target
之间存在差异,但您希望将其限制为在变更集source
中修改的文件。您可以分两步完成(使用别名或shell脚本轻松组合成一个):
列出source
中修改的文件:
hg log -r source --template '{files}'
这只输出文件名列表。
请求这些文件的差异:
hg diff -r target -r source $(hg log -r source --template '{files}')
步骤2是带有“命令替换”$(...)
的bash命令,它插入第一步的输出。其他方法也是可能的。
答案 1 :(得分:0)
来自hg help diff
如果只指定了一个修订版,则将该修订版与工作目录
进行比较
即。你可以尝试hg up $SOURCE; hg diff -r $TARGET