1

我正在开发一个 mercurial 存储库并使用pbrach来处理一组补丁。

假设我有两个文件 A 和 B,以及两个补丁 patchA(修改 A)和 patchAB(修改 A 和 B)。pgraph 如下所示:

o  patchAB
|
@  patchA
|
o  default

错误地,我将文件 B 更改为 patchA。

如何将补丁 A 拆分为 2 部分,最终得到:patchA=patchA' + newPatch,其中 patchA=原始补丁,patchA'=文件 A 中补丁 A 的更改,P2=文件 B 中补丁 A 的更改。

o  patchAB
|
| o newPatch // rest of original patchA without changes already in patchA'
|/
@  patchA' // with only the changes to file A
|
o  default

(我搜索类似于使用 mq 拆分补丁但针对 pbranch 的内容)。

4

1 回答 1

2

最后,我自己找到了一个相对较短的解决方案。

首先,我得到最后一个“好”提交的修订号(比如 1)和错误提交(比如 2)。

1)我更新到patchA,恢复fileB上的更改,并提交它,然后向上合并更改:

hg up patchA
hg revert -r1 fileB  // get fileB before the wrong change
hg commit -m"revert fileB"
hg pmerge -a

2)再次更新到patchA,恢复错误的提交并创建一个新的补丁:

hg up patchA
hg revert -r2 fileB  // get fileB after the wrong change
hg pnew patchA2

现在我们在 patchA 中有了 fileA 的更改,在 patchA2 中有了其余的更改。

于 2011-08-18T08:39:53.920 回答