Podejmij prosty przykład: pracuję nad domyślną gałęzią, mam kilka zestawów zmian zatwierdzonych lokalnie i wyciągnąłem kilka z głównego repozytorium. Pracowałem przez kilka dni w moim izolowanym lokalnym repozytorium, więc jest sporo zmian, które można scalić, zanim będę mógł ponownie wprowadzić wyniki do wzorca.Czy scalanie kierunku ma znaczenie w Mercurial?
default ---o-o-o-o-o-o-o-o-o-o-o (pulled stuff)
\
o----o------------o (my stuff)
Mogę teraz zrobić dwie rzeczy.
Wariant nr 1:
hg pull
hg merge
Wynik 1:
default ---o-o-o-o-o-o-o-o-o-o-o
\ \
o----o------------o-O
Wariant nr 2:
hg pull
hg update
hg merge
Wynik 2:
default ---o-o-o-o-o-o-o-o-o-o-o-O
\ /
o----o------------o
Te dwa wyniki wyglądają dla mnie izomorficznie, ale w praktyce wydaje się, że opcja nr 2 ma mniejszy zestaw zmian (ponieważ stosuje tylko kilka zmian w linii głównej, zamiast stosować wszystkie zmiany w mojej linii głównej).
Moje pytanie brzmi: czy to ma znaczenie? Czy powinienem dbać o kierunek moich połączeń? Czy oszczędzam miejsce, jeśli to zrobię? (Wykonanie hg log --patch --rev tip
po fuzji sugeruje).
Jest to szczególnie ważne, jeśli używasz [Hg-Git] (http://hg-git.github.com/), ponieważ to śledzi pozycję wirtualnych gałęzi Git za pomocą zakładek. Jeśli dokonasz scalenia w niewłaściwy sposób, zakładka Git nie zostanie przeniesiona i nie będziesz miał nic do przeforsowania. –
Łączenie 200 w 195 nie gwarantuje przeniesienia zakładki do przodu do 201. Jeśli wykonasz 'hg update my-stuff; hg scalanie 200 'będzie, ale jeśli zrobisz 'hg update 195; hg scalanie 200 "nie będzie. Aktualizacja według nazwy zakładki czyni ją * aktywną *. –