生成仅包含 revision/revset 修改的文件内容的 Hg diff(或补丁)
Generate Hg diff (or patch) that Only includes content for files modified by a revision/revset
给定一个大型代码库和两个修订或修订集(例如,一个本地 'source' 和一个目标),它们可能共享也可能不共享最近的父级,并且通常包含大量不相关的文件增量;
如何生成 diff 输出来比较 仅针对在源 revset 本身中修改的 文件的更改?
(这应该是祖先之间的增量;但是 仅 用于 revset 中包含的文件。)
使用 hg diff -r target -r source
显示 所有 祖先的变化,即使对于未被源部分修改的文件也是如此。
此外,这应该在不了解目录结构的情况下完成。
来自hg help diff
If only one revision is specified then that revision is compared to the working directory
即你可以试试 hg up $SOURCE; hg diff -r $TARGET
如果我没理解错的话,您想要版本 source
和 target
之间的差异,但您希望将其限制为在变更集 source
中修改的文件。您可以分两步完成(使用别名或 shell 脚本轻松组合成一个):
列出source
中修改的文件:
hg log -r source --template '{files}'
这只是输出文件名列表。
请求这些文件的差异:
hg diff -r target -r source $(hg log -r source --template '{files}')
步骤 2 是带有 "command substitution" $(...)
的 bash 命令,它插入步骤一的输出。其他方法也是可能的。
给定一个大型代码库和两个修订或修订集(例如,一个本地 'source' 和一个目标),它们可能共享也可能不共享最近的父级,并且通常包含大量不相关的文件增量;
如何生成 diff 输出来比较 仅针对在源 revset 本身中修改的 文件的更改?
(这应该是祖先之间的增量;但是 仅 用于 revset 中包含的文件。)
使用 hg diff -r target -r source
显示 所有 祖先的变化,即使对于未被源部分修改的文件也是如此。
此外,这应该在不了解目录结构的情况下完成。
来自hg help diff
If only one revision is specified then that revision is compared to the working directory
即你可以试试 hg up $SOURCE; hg diff -r $TARGET
如果我没理解错的话,您想要版本 source
和 target
之间的差异,但您希望将其限制为在变更集 source
中修改的文件。您可以分两步完成(使用别名或 shell 脚本轻松组合成一个):
列出
source
中修改的文件:hg log -r source --template '{files}'
这只是输出文件名列表。
请求这些文件的差异:
hg diff -r target -r source $(hg log -r source --template '{files}')
步骤 2 是带有 "command substitution" $(...)
的 bash 命令,它插入步骤一的输出。其他方法也是可能的。