Как разделить патч на две части (с помощью pbranch)? - PullRequest
1 голос
/ 16 августа 2011

Я работаю над ртутным репозиторием и использую pbrach для работы с набором патчей.

Предположим, у меня есть два файла A и B и два патча patchA (изменяет A)и patchAB (модифицирует A и B).Рисунок выглядит следующим образом:

o  patchAB
|
@  patchA
|
o  default

По ошибке я допустил изменение файла B в патч A.

Как разделить патч A на 2 части, чтобы я в итогес: patchA = patchA '+ newPatch, где patchA = оригинальный патч, patchA' = изменения patchA в файле A, 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

(я ищу что-то похожее на расщепление патчей с mq , но для pbranch).

1 Ответ

2 голосов
/ 18 августа 2011

Наконец, я сам нашел относительно короткое решение.

Сначала я получаю номер ревизии последнего «хорошего» коммита (скажем, 1) и неправильный коммит (скажем, 2).

1) Я обновляюсь до patchA, отменяю изменения в файле B, фиксирую их и добавляю изменения вверх:

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

Теперь у нас есть изменения файла A в patchA, а остальные в patchA2.

...