2011-08-16 24 views
1

我正在處理一個mercurial存儲庫,並使用pbrach來處理一組修補程序。如何將補丁分成兩部分(使用pbranch)?

假設我有兩個文件A和B,以及兩個補丁patchA(修改A)和patchAB(修改A和B)。 的pgraph看起來是這樣的:

o patchAB 
| 
@ patchA 
| 
o default 

搞錯了,我犯了一個改變以文件B爲patchA。如何將補丁A分成兩部分,以便最終得到:patchA = patchA'+ newPatch,其中patchA = OriginalPatch,patchA'=文件A中patchA的變化,P2 = patchA的變化在文件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東西)。

回答

2

最後,我自己找到了一個相對較短的解決方案。

首先,我得到最後一個'良好'提交(例如1)的修訂號,以及錯誤提交(比如說2)。

1)我更新到patchA,恢復上FILEB的變化,並提交它,然後向上pmerge的變化:

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。