Połącz gałąź z pniem

119

Używając TortoiseSVN, muszę wprowadzić zmiany, które wprowadziłem w gałęzi, a następnie połączyć je z linią główną.

Jestem jedynym programistą w tym projekcie, więc wiem, że bagażnik się nie zmienił. Uczę się SVN, aby w końcu mój zespół mógł z niego korzystać.

Zasadniczo chcę, aby mój pień wyglądał dokładnie jak gałąź.

W świecie sprzed svn po prostu skopiowałem pliki z mojego folderu oddziału, usunąłem pliki w folderze głównej, a następnie skopiowałem gałąź do linii głównej.

W TortoiseSVN, próbowałem Reintegrate a branch, Merge a range of revisionsi Merge two different trees. Wydaje się, że nic nie zmienia bagażnika. Próbowałem też rozgałęzienia na szczycie pnia. To daje mi błąd, mówiąc, że bagażnik już istnieje.

Brian Bolton
źródło

Odpowiedzi:

157

W Twoim przypadku:

  1. Przełącz kopię roboczą do bagażnika (przełącznik SVN)
  2. Scal gałąź do kopii roboczej (Scalanie SVN)
  3. Upewnij się, że wszystko nadal się kompiluje i działa
  4. Zatwierdź kopię roboczą (bagażnik)
  5. Rozważ zabicie gałęzi

W środowisku zespołowym sugerowałbym, aby najpierw scalić najnowsze modyfikacje z linii głównej w gałęzi, upewnić się, że wszystko się kompiluje i działa, a następnie wykonać powyższe kroki (co będzie trywialne, ponieważ już przetestowałeś zmiany).


Aktualizacja

W kroku 5 wspominam o zabiciu gałęzi. Dzieje się tak, ponieważ gdy gałąź z elementu znajduje się w pniu, należy ją traktować jako część pnia. W takim przypadku gałąź należy zabić, aby nikt nad nią nie pracował. Jeśli potrzebne są większe modyfikacje tej funkcji, powinieneś utworzyć nową gałąź dla tego.

Jedyne gałęzie, których nie zabijam, to konserwacja i wydanie, chyba że określone wydanie nie jest już obsługiwane.

Bez względu na wszystko, zawsze masz dostęp do każdej wersji, więc zabijanie gałęzi jest używane tylko po to, aby uniemożliwić innym programistom rozwój w martwej gałęzi.

mbillard
źródło
Komentarz dodany w kroku 5 mógłby prawdopodobnie lepiej oznaczać krok 1? Jeśli chcesz użyć "Reintegrate a branch" z okna dialogowego Scal TortoiseSVN, scalenie wszystkich zmian z głównej gałęzi (lub głównej gałęzi) jest wymagane.
jbvo
1
Czy pierwszy krok (przełączenie kopii roboczej na linię główną) jest konieczny tylko wtedy, gdy nie ma oddzielnej kopii roboczej gałęzi i linii głównej?
Jeff B
1
Myślę, że głównym szczegółem, którego tu brakuje, jest folder, który klikasz na każdym kroku, dzięki czemu znasz kontekst każdego kroku.
MacGyver,
10

Myślę w TortoiseSVN 1.8.5, Scal | Scalanie dwóch różnych drzew powinno działać. Kiedy scalasz gałąź / tag z powrotem do linii głównej, sztuczka polega na tym, że adres URL From to łącze główne, a To to tag / gałąź. Dziwne, ale prawdziwe.

Źródło: łączenie

W przypadku katalogów, które nie znajdują się w kopii roboczej, ale znajdują się w znaczniku / gałęzi, mogą wystąpić błędy powodujące konflikt. Po prostu zaakceptuj konflikt i powtórz scalenie.

Kevin Johnsrude
źródło
Po wykonaniu instrukcji na stronie żółwia, upewnij się, że po fuzji wykonałeś pień bez modyfikowania czegokolwiek. Próbowałem odznaczyć kilka rzeczy, których nie chciałem, aby zostały popełnione, co powodowało ostrzeżenie o nierekurencyjnym zatwierdzeniu. Rozważ również usunięcie gałęzi zgodnie z instrukcjami.
goku_da_master
6

Najpierw przełącz kopię roboczą do bagażnika. Następnie wykonaj scalenie zakresu wersji, od gałęzi do pnia. Po zakończeniu tego okna różnice będą oczekujące na zmiany w kopii roboczej trunk. Będziesz musiał je zatwierdzić tak, jakbyś ręcznie wprowadzał zmiany w kopii roboczej.

W moim przypadku bardziej typowe jest utrzymywanie pnia w ruchu i wyłączanie gałęzi w czasie kompilacji. Więc jedyne scalenie, jakie kiedykolwiek muszę zrobić, to usunąć błąd z linii głównej i umieścić go w najnowszej gałęzi kompilacji i ponownie wydać tę gałąź. Najłatwiej to zrobić, ponieważ, jak odkryłeś, scalanie jest w najlepszym razie niezdarne. Jest to, aby zachować najnowszą gałąź i linię główną wyewidencjonowaną do mojego komputera i całkiem dosłownie skopiować pliki z głównej gałęzi do gałęzi i zaewidencjonować oba.

RozwójChris
źródło
2
Należy zachować dużą ostrożność podczas „kopiowania” plików. Użyj czegoś takiego jak eksport TortoiseSVN, aby uniknąć uszkodzenia ukrytych katalogów svn.
Milimetryczny
3

Używam TortoiseSVN 1.9.3, kompilacja 27038.

Wykonaj poniższe kroki, aby scalić gałąź z linią główną.

1) Kliknij prawym przyciskiem myszy kopię roboczą trunk i wybierz poniższą opcję.

wprowadź opis obrazu tutaj

2) W przypadku łączenia oddziałów w linię główną, wybierz drugą opcję, jak pokazano poniżej, i kliknij dalej

wprowadź opis obrazu tutaj

3) W polu Od: wprowadź pełny adres URL folderu łącza. Może to zabrzmieć źle, ale pamiętaj, że linia główna jest punktem początkowym, do którego chcesz dodać zmiany gałęzi. W polu Do: wprowadź pełny adres URL folderu gałęzi funkcji.

wprowadź opis obrazu tutaj

4) Kliknij Dalej i wykonaj testowe scalanie

wprowadź opis obrazu tutaj

5) Jeśli testowanie się powiedzie, kliknij przycisk Połącz.

6) Po pomyślnym scaleniu zatwierdź zmiany na linii głównej.

Waqas Ahmed
źródło