O ile mi wiadomo, Mercurial nie ma żadnych narzędzi do podziału zestawów zmian. Jeśli masz szczęście, wszystkie zmiany, które chcesz, są w osobnych zestawach zmian, a następnie możesz użyć TransplantExtension. Myślę, że można go porównać do Git's cherry-pick, ale nie użyłem git dużo.
Możesz również użyć hg diff, aby ręcznie zatwierdzić zmiany do określonego pliku do nowego oddziału. Użyj zakresu obrotów, aby oznaczyć cały oddział źródłowy:
hg diff myfile -r startrevision:endrevision
Dane wyjściowe można traktować jako poprawki. Zrób to dla każdego pliku, który chcesz i zatwierdz, a następnie scal. Pomijanie destrukcyjnych zmian. Oczywiście możesz też zrobić to wielokrotnie, gdy destrukcyjna zmiana znajduje się w środku zakresu rewizji.
Powiedziawszy, że, to, co próbujesz zrobić, nie jest zbudowane z czegoś, co jest rajem. Ta hardcorowa edycja historii jest bardziej obszarem Gita (zauważ, że to tylko moja opinia). Zachowaj stabilne zmiany i niszczące zmiany w oddzielnych zestawach zmian (a może nawet w oddzielnych oddziałach). Używam transplant, rebase i strip do przenoszenia zmian. Kiedy wszystko jest gotowe, są one scalane i odpowiednio wypychane.
Och, i sprawdź MercurialQueues. Nie używałem go sam, ale widziałem, jak robi szalone rzeczy. Może to jest w stanie zrobić coś zgodnie z tym, czego chcesz.
Can Używam: hg rebase --collapse --keepbranches -b -d Wydaje się umieścić wszystkie zmienione pliki w moim katalogu roboczym bez ich zatwierdzania. Czy są jakieś skutki uboczne? –
Rygu
Nie użyłem rebase do niczego oprócz najbardziej podstawowych rzeczy, sugeruję, żebyś po prostu przeczytał dokumenty i wypróbował je dokładnie w repozytoriach testowych, aby dowiedzieć się, jak to działa. A tak przy okazji, ten komentarz jest całkowicie poprawnym (i osobnym) pytaniem, które można zadać tutaj na Stackoverflow. =) – Mizipzor
Mercurial ma rozszerzenie do dzielenia zestawów zmian - nazywa się histedit. Po prostu zatwierdzasz podczas edytowania zestawu zmian. – Jack