我正在使用mercurial存储库并使用pbrach来处理一组补丁。
假设我有两个文件A和B,以及两个补丁patchA(修改A)和patchAB(修改A和B)。 pgraph看起来像这样:
o patchAB
|
@ patchA
|
o default
我错误地将文件B更改为patchA。
如何将补丁A分成两部分,以便最终得到:patchA = patchA'+ newPatch,其中patchA =原始补丁,patchA'=文件A中patchA的变化,P2 =补丁A的变化文件B。
o patchAB
|
| o newPatch // rest of original patchA without changes already in patchA'
|/
@ patchA' // with only the changes to file A
|
o default
(我搜索的内容与splitting patches with mq类似,但是对于pbranch来说。)
答案 0 :(得分: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中。