生成仅包含由修订版/ revset修改的文件的内容的Hg diff(或补丁)

时间:2016-01-31 01:31:30

标签: version-control mercurial diff

给定一个大的代码库和两个修订或修改(例如,本地'来源'和目标),它们可能会或可能不会共享最近的父级,并且通常包含大量不相关的文件增量;

如何生成diff输出以比较仅在源revset本身中修改的文件的更改

(这应该是祖先之间的差异;但是对于revset中包含的文件,只有 。)

使用hg diff -r target -r source显示所有祖先中的更改,即使对于源sevision未修改的文件也是如此。

此外,这应该在不知道目录结构的情况下完成。

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望在转化sourcetarget之间存在差异,但您希望将其限制为在变更集source中修改的文件。您可以分两步完成(使用别名或shell脚本轻松组合成一个):

  1. 列出source中修改的文件:

    hg log -r source --template '{files}'
    

    这只输出文件名列表。

  2. 请求这些文件的差异:

    hg diff -r target -r source $(hg log -r source --template '{files}')
    
  3. 步骤2是带有“命令替换”$(...)的bash命令,它插入第一步的输出。其他方法也是可能的。

答案 1 :(得分:0)

来自hg help diff

  

如果只指定了一个修订版,则将该修订版与工作目录

进行比较

即。你可以尝试hg up $SOURCE; hg diff -r $TARGET