Czy preferuje się scalanie?Której głowy do pozycji na przed dokonaniem scalenia?
Co mam na myśli to: mam, powiedzmy, stary rev 1000. W międzyczasie zrobiłem 234 commits i jestem na rev 1234. Teraz muszę wrócić do rev 1000, aby zaimplementować poprawkę dla klienta . Zgadzam się z poprawką, przekazuję wersję do klienta i zatwierdzam 1235.
To drobna zmiana: dotyczy tylko jednego pliku.
W tym momencie mam dwie głowy: 1235 (którego rodzic jest 1000) i 1234. Ich wspólną (grand-grand -...- dominująca) jest 1000.
Gdybym wydać hg merge
po nim hg status
, Otrzymuję gigantyczną listę zmian.
Jeśli jednak zrobię najpierw hg update -C 1234
, a następnie hg merge
i hg status
, to widzę tylko moją unikalną zmianę (chyba że się mylę, co się stało).
Zasadniczo ten sposób:
hg update -C 1234
hg merge # (merging 1234 and 1235, my two only heads)
hg status
daje inny status niż to:
hg update -C 1235
hg merge # (merging 1234 and 1235, my two only heads)
hg status
Więc w zasadzie, pytam status (hg status
) po połączeniu dwóch takich samych głów, ale Wydaje się, że wyjście hg status
zależy od głowy, na którym obecnie się znajduję.
Czy to normalne zachowanie, a jeśli tak, to czy istnieje jedna głowa, aby "preferować" drugą?
Czy obie operacje prowadzą do tego samego stanu repozytorium/kodu źródłowego na końcu?
+1, wielkie dzięki. Rzeczywiście wróciłem do głównej linii rozwoju i scaliłem tam poprawkę. Ale byłem bardzo zaskoczony: * status "hg" * (zawsze wykonuję * hg sta * przed wykonaniem commit) przeraził mnie ... Więc trochę "wywnioskowałem", że prawdopodobnie lepiej jest zaktualizować do głównej linii i scalać stamtąd. Ale wciąż chciałem mieć pewność, że nie widziałem rzeczy. Jakoś byłem pewien, od zawsze, że scalenie zawsze będzie w 100% identyczne. Nie wiem, skąd to wzięłam: po prostu wydawało mi się to logiczne ... Ale myliłem się :) Dzięki za link, czas przeczytać! – NoozNooz42