2010-03-01 17 views

Odpowiedz

4

Nie, nazwy oddziałów są częścią zestawu zmian (to naprawdę jest etykieta, którą dodajesz do zatwierdzenia), oznacza to, że wartość mieszania zestawu zmian zależy od nazwy oddziału.

Jedynym sposobem, aby zmienić to z mocą wsteczną, jest przepisanie historii (która nie działa dobrze, jeśli popchnąłeś swoje zmiany gdzie indziej, ponieważ będziesz musiał przepisać każde repozytorium, które ma zmiany).

Aby napisać historię ponownie, można użyć na przykład mq.

0

Nie jest to kompletne rozwiązanie, ale bez ponownego zapisywania historii; możesz oznaczyć ostatni zestaw zmian w nienazwanej gałęzi. Jeśli nigdy nie zrezygnujesz z tego, tag powinien zostać udostępniony. Jeśli chcesz ponownie rozdzielić, możesz przejść do nazwanego oddziału po oznaczonym zestawie zmian.

14

Po prostu chciałem to zrobić, a oto rozwiązanie, które znalazłem. Minął rok od pierwotnego zapytania, co może wyjaśnić, dlaczego mogę znaleźć rozwiązanie. Wadą jest to, że tworzysz dodatkową wersję procesu, ale nie było to dla mnie zbyt złe.

Najpierw wróć do miejsca, w którym chcesz utworzyć oddział. W moim przypadku, faktycznie chciałem rozpocząć nowy root (ponieważ nie byłem bardzo rozsądny, kiedy uruchomiłem repozytorium, ale tak czy inaczej), więc aktualizuję do wartości zerowej. Prawdopodobnie chcesz zacząć gdzie indziej, zależy to od twojej sytuacji.

$ hg update null 

Następnie utwórz gałąź.

$ hg branch blah 
$ hg commit -m "Created blah branch." 

Następnie, rebase wszystkie zobowiązuje zrobiliśmy na naszego nowego oddziału:

$ hg rebase -s SOURCE -d DEST 

SOURCE tutaj powinien być pierwszym popełnić dokonane w zatwierdzeń chcesz utworzyć oddział od i DEST powinien być zatwierdzeniem, w którym utworzono oddział (ten, który popełniliśmy powyżej).

+1

Dzięki, to działało idealnie. To powinna być zaakceptowana odpowiedź. –

+1

Działa to (jak sądzę), ale ma potencjalny problem z tym, że nie odtwarza się dobrze, jeśli udostępniłeś swoje repozytorium każdemu (tak jak @tonfa pośrednio zauważa). Zauważono, że [rozszerzenie rebase] (http://mercurial.selenic.com/wiki/RebaseExtension) _Nie powinieneś odnawiać zestawów zmian, które zostały już udostępnione innym. Wykonanie tego zmusi wszystkich do wykonania tego samego rebase_ –

+0

Dla tych, którzy pracują w hc rtęci, musisz włączyć rozszerzenie rebase w Ustawieniach. – amaidment

Powiązane problemy