Jak zasugerował Mark, MqExtension jest jednym z rozwiązań Twojego problemu. IMHO prostszym przepływem pracy jest użycie rozszerzenia rebase . Załóżmy, że masz taką historię:
@ changeset: 2:81b92083cb1d
| tag: tip
| summary: my new feature: edit file a
|
o changeset: 1:8bdc4508ac7b
| summary: my new feature: add file b
|
o changeset: 0:d554afd54164
summary: initial
Oznacza to, że wersja 0
jest podstawą, na której zacząłeś pracować nad swoim elementem. 1-2
Powiedzmy, że teraz chcesz mieć poprawki w nazwanej gałęzi my-feature
. Zaktualizuj do wersji 0
i utwórz tę gałąź:
$ hg up 0
$ hg branch my-feature
$ hg ci -m "start new branch my-feature"
Historia wygląda teraz tak:
@ changeset: 3:b5939750b911
| branch: my-feature
| tag: tip
| parent: 0:d554afd54164
| summary: start new branch my-feature
|
| o changeset: 2:81b92083cb1d
| | summary: my new feature: edit file a
| |
| o changeset: 1:8bdc4508ac7b
|/ summary: my new feature: add file b
|
o changeset: 0:d554afd54164
summary: initial
Użyj rebase
polecenia, aby przenieść wersje 1-2
do wersji 3
:
$ hg rebase -s 1 -d 3
Daje to następujący wykres:
@ changeset: 3:88a90f9bbde7
| branch: my-feature
| tag: tip
| summary: my new feature: edit file a
|
o changeset: 2:38f5adf2cf4b
| branch: my-feature
| summary: my new feature: add file b
|
o changeset: 1:b5939750b911
| branch: my-feature
| summary: start new branch my-feature
|
o changeset: 0:d554afd54164
summary: initial
To wszystko… jak wspomniano w komentarzach do odpowiedzi Marka, poruszanie się po już wprowadzonych zestawach zmian jest ogólnie złym pomysłem, chyba że pracujesz w małym zespole, w którym możesz komunikować się i wymuszać manipulowanie historią.