Mercurial可以做反向补丁吗?

ete*_*ode 10 diff mercurial patch

情景:我已经"继承"的程序,保持水银下,只有作品在我的系统上的具体调整,以某些文件被签入我希望在检查这些调整.

我最近的解决方案是创建一个包含这些调整的mercurial补丁文件(hg diff> patchfile); 当我需要检查我的更改时,我将反向应用补丁,提交并重新应用补丁.(如果我完全控制了源代码,我只是将所有这些小调整移到一个不受版本控制的配置文件中,在版本控制下放置一个"示例"配置文件)

不幸的是,似乎虽然GNU patch命令支持该--reverse标志,但它不支持hg的多文件diff格式作为单个补丁文件(或者它可能,但我只是不知道它的开关?).OTOH,hg有自己的patch命令可以应用diff,但是它不支持任何类型的reverse标志.

所以我的问题是双重的:

  1. 应该如何在mercurial中完成?当然,坚持使用"调整补丁"并不是处理这种情况的唯一方法.也许mercurial有一个插件或内置的东西,用于这种暂时的,不可承认的变化.
  2. 除了应该如何完成任务之外,有没有什么方法可以将这样的mercurial diff-patch反向应用到像这样的mercurial repo?在其他情况下,此类功能将非常有用.

Ry4*_*ase 22

Mercurial的patch命令(真的import)不支持反向,但hg diff确实如此.使用--reverse它,你将有一个Mercurial可以应用的反向补丁.

但是,您所描述的是一种非常常见的供应商分支风格的工作流程,这种工作流程可以更好地支持使用diff和patch之外的功能.

具体而言,Mercurial Queues完全符合您的要求.

  • 您想要进行调整,开始一个新的补丁,然后当您完成时,提升两个补丁,在调整之前重新排序永久更改,并仅重新应用那些,然后完成。Windows 上的 TortoiseHg 使这变得更容易一些,但流程是相同的。 (2认同)