Używając TortoiseSVN, jak scalić zmiany z pnia do gałęzi i odwrotnie?

132

Czytałem o rozgałęzianiu / scalaniu z Subversion 1.5 przy użyciu doskonałej i darmowej książki Kontrola wersji z Subversion . Myślę, że rozumiem, jak używać klienta wiersza poleceń Subversion do wykonywania czynności, których potrzebuję najczęściej, którymi są:

Zaktualizuj gałąź ze zmianami z pnia

Z katalogu roboczego oddziału uruchom:

scalanie svn http://svn.myurl.com/proj/trunk

Połącz gałąź z pniem

Z katalogu roboczego linii głównej uruchom:

scalanie svn - ponowna integracja http://svn.myurl.com/proj/branches/mybranch

Jednak używamy TortoiseSVN 1.5 jako naszego interfejsu do Subversion. Chciałbym wiedzieć, jak najlepiej wykonać te operacje za pomocą TortoiseSVN. Nowe okno dialogowe zawiera trzy różne opcje w menu głównym.

  1. Scal szereg wersji
  2. Ponownie zintegruj gałąź
  3. Połącz dwa różne drzewa

Z tego, co mogę zebrać, TortoiseSVN zawsze wykonuje svn z następującą składnią.

scalanie svn [--dry-run] --force From_URL @ revN To_URL @ revM PATH

Dodatkowo, ponowna integracja gałęzi często kończy się niepowodzeniem z komunikatem informującym, że niektóre cele nie zostały scalone, więc nie można jej kontynuować, dlatego musiałem użyć opcji # 3.

Moje pytania to:

  1. Jak użyć TortoiseSVN 1.5, aby scalić zmiany z pnia do gałęzi?
  2. Jak użyć TortoiseSVN 1.5 do scalenia gałęzi z pniem, z metodą reintegracji i bez niej?
  3. Których z powyższych opcji powinienem użyć w przypadku każdej z nich i dlaczego?

EDYTOWAĆ

Dzięki testom „na sucho” odkryłem, że operacja Subversion w wierszu poleceń

scalanie svn http://svn.myurl.com/proj/trunk

jest analogiczne do opcji nr 1 (Scal zakres wersji) w TortoiseSVN, o ile pozostawię zakres wersji pusty.

Ryan Taylor
źródło
Nie znaleziono linków! = /
Leonardo Costa

Odpowiedzi:

28

Zachowanie zależy od wersji posiadanej przez repozytorium. Subversion 1.5 pozwala na 4 typy scalania:

  1. scal sourceURL1 [@N] sourceURL2 [@M] [WCPATH]
  2. scal źródłoWCPATH1 @ N źródłoWCPATH2 @ M [WCPATH]
  3. scal [-c M [, N ...] | -r N: M ...] ŹRÓDŁO [@REV] [WCPATH]
  4. merge --reintegrate SOURCE [@REV] [WCPATH]

Subversion przed 1.5 dopuszczał tylko pierwsze 2 formaty.

Technicznie rzecz biorąc, możesz wykonać wszystkie scalenia dwiema pierwszymi metodami, ale dwie ostatnie umożliwiają śledzenie scalania przez Subversion 1.5.

Opcje TortoiseSVN łączą zakres lub mapy wersji do metody 3, gdy repozytorium ma wersję 1.5+, lub do metody pierwszej, gdy repozytorium jest starsze.

Podczas scalania funkcji do gałęzi wydania / obsługi należy użyć polecenia „Scal zakres wersji”.

Tylko wtedy, gdy chcesz scalić wszystkie funkcje oddziału z powrotem do gałęzi nadrzędnej (zwykle głównej), powinieneś rozważyć użycie opcji „Ponowna integracja gałęzi”.

Ostatnie polecenie - Połącz dwa różne drzewa - jest przydatne tylko wtedy, gdy chcesz wyjść poza normalne zachowanie rozgałęziania. (Np. Porównanie różnych wersji, a następnie scalenie różnicy z inną gałęzią)

Bert Huijben
źródło
czy ktoś mógłby mi pomóc ze stackoverflow.com/questions/51657636/… . To ważne pytanie dla naszego zespołu, potrzebujemy pomysłów.
ankur
252

Nie mogłem poprawnie zastosować się do innych odpowiedzi, oto więcej poradnika dla manekinów ...

Możesz to zrobić w obie strony, aby przejść trunk -> branchlub branch -> trunk. Zawsze najpierw trunk -> branchnaprawiam tam konflikty, a potem łączę branch -> trunk.

Połącz linię główną w gałąź / tag

  1. Sprawdź gałąź / tag
  2. Kliknij prawym przyciskiem myszy katalog główny gałęzi | Tortoise SVN | Scal ...
  3. Typ scalania: Scal zakres wersji | Kliknij Następny' wprowadź opis obrazu tutaj
  4. Scal zakres wersji: Wybierz adres URL katalogu głównego, który skopiowałeś do gałęzi / znacznika. Wprowadź wersje do scalenia lub pozostaw pole puste, aby scalić wszystkie wersje | Kliknij Następny' wprowadź opis obrazu tutaj
  5. Opcje scalania: po prostu zostawiłem je jako domyślne | kliknij „Scal” wprowadź opis obrazu tutaj
  6. Spowoduje to scalenie wersji z wyewidencjonowaną gałęzią / znacznikiem
  7. Następnie zatwierdź scalone zmiany w gałęzi / tagu
icc97
źródło
4
Pominąłem „Zakres wersji do scalenia” i zrobiłem „Testuj scalanie”. To było to, czego potrzebowałem: zakres został automatycznie ustawiony dla mnie (od kiedy gałąź została zrobiona do ostatniej rewizji w gałęzi)
Lian
Świetna odpowiedź - zwięzła i łatwa do zrozumienia. U mnie zadziałało, ale kiedy chciałem tylko scalić pojedynczy plik konfiguracyjny, z jakiegoś powodu musiałem to zrobić dwa razy. Teraz wszystko jest w porządku. Pozdrawiam
skrzydłowy
@Lian Zrobiłem to samo, aby połączyć się z pnia w gałąź; pozostaw zakres wersji pusty, jeśli chcesz, aby najnowsza wersja plików z linii głównej została scalona z plikami gałęzi.
Skrzydłowy
2
Obecna wersja SVN Tortoise ma teraz opcję scalenia wszystkich wersji zamiast pozostawiania pustego zakresu wersji w kroku 4.
Nieznany twórca
1
@Onkar Niektóre konflikty prawie zawsze się zdarzają. Jeśli masz dwie gałęzie, np. trunkI branch, wtedy upewnienie się, że jak najszybciej scalisz zmiany od trunkdo, branchpozwoli uniknąć konfliktów tak bardzo, jak to możliwe. Oznacza to, że po połączeniu branchsię trunknie powinno być żadnych konfliktów.
icc97
1

Spójrz na svnmerge.py . To wiersz poleceń, nie może być wywołany przez TortoiseSVN, ale jest potężniejszy. Z FAQ :

Tradycyjna subversion pozwoli ci scalić zmiany, ale nie „pamięta” tego, co już scaliłeś. Nie zapewnia również wygodnego sposobu wykluczania zestawu zmian z scalania. svnmerge.py automatyzuje część pracy i upraszcza ją. Svnmerge tworzy również komunikat zatwierdzenia z komunikatami dziennika ze wszystkich scalonych rzeczy.

Liudvikas Bukys
źródło
6
svnmerge.py został opracowany na Subversion 1.4 i wcześniejszych. Subversion 1.5 wprowadził śledzenie scalania w podstawowym produkcie.
Bert Huijben,
0

Kliknij prawym przyciskiem myszy folder i wybierz TortoiseSVN -> Scal wszystko

Denis
źródło