2010-07-22 10 views
48

Per this old question, używając SVN 1.5, reintegrację oddział wielokrotnie jest problematyczne, i należy ich unikać.Subversion gałąź reintegracji w v1.6

Poczyniono pewne dudnienie, zgodnie z którym: „To jest znany problem i powinien być ustalony w SVN 1.6.” Czy tak było? Czy to jest naprawione? Czy mogę ponownie połączyć wiele razy?

+0

Bądźmy bardziej konkretni. Na potrzeby tego pytania nie obchodzi mnie, czy powinienem ponownie się włączyć. To jest inne pytanie. Na razie chcę wiedzieć _how_, aby ponownie połączyć się wiele razy. –

+0

Tak, zostało to naprawione w Subversion 1.8. – bahrep

Odpowiedz

56

Aby scalić gałąź temat do bagażnika wielokrotnie: Wykonaj następujące na każdym seryjnej.

  1. svn merge --reintegrate <topic> <trunk>, jak zwykle. (=> rM)
  2. svn merge --record-only -c M ^/<trunk> <topic>. Uwaga opcję record-only.

Krok 2 zasadniczo opowiada oddział temat do rozważenia scalającej (rewizja M, z Etapu 1) część swojej historii. Ta rewizja scalania jest zwykle przyczyną problemów podczas reintegracji; svn próbuje cofnąć rM po ponownym zintegrowaniu tematu.

Tak, powtarzające się prace reintegracyjne, po prostu nie automatycznie. :)

Ostatecznie znalazłem to rozwiązanie poprzez enlightening commit message to the svn source i pasujące test (wyszukaj "def multiple_reintegrates"). To "sprytna sztuczka" odkryta i używana przez svn-devs w aktualnych wydaniach. Zostało nawet dodane do more recent documentation. Wynik wciąż nie jest tak dobry jak właściwości łączące DVCS, ale jest co najmniej funkcjonalny.

Jedynym ogólnym minusem (jak na open issue z 2 czerwca 2010) jest to, że najwyraźniej wyjście svn log -g jest nieporządne. Myślę, że to jest ryzyko.

+3

W końcu dodali to do dokumentów: http://svnbook.red-bean.com/nightly/en /svn.branchmerge.advanced.html#svn.branchmerge.advanced.reintegratetwice –

+1

Holy crap. To wyjaśnienie byłoby o wiele łatwiejsze do przeanalizowania. Dodałem go do odpowiedzi. A + –

+0

Czy ten uchwyt może się łączyć z pnia do gałęzi (i odwrotnie)? Np. - reje- strować tylko połączenie trunk -> branch również? – JeeBee

1

Podczas 1,6 rzeczywiście było rozwiązać problemy ze śledzeniem seryjnej, nie sądzę, można ponownie wykorzystać zintegrowany oddział.

Ale to nie jest problem. Ponieważ oddział został w pełni zintegrowany z bagażnika, po prostu go usunąć i utworzyć nowy oddział (o tej samej nazwie) na swoim miejscu.

+2

Jakieś referencje? –

+0

@Andres: W jaki sposób proponuję znaleźć odniesienia, że ​​pewne rzeczy (zdolność do wielokrotnej ponownej integracji) nie istnieją? Książka SVN 1.5 mówi, że reintegracja czyni gałąź bezużyteczną (na końcu http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.branchemerge.basicmerging.stayinsync). Bezpłatne bezpłatne przejrzenie informacji o wydaniu dla SVN 1.6 (http://subversion.apache.org/docs/release-notes/1.6.html i http://svn.apache.org/repos/asf/subversion/tags/1.6 .12/CHANGES) dla wszystkiego, co powoduje, że te informacje są nieaktualne. – sbi

+2

"Nie sądzę, że możesz ..." nie jest zbyt wiarygodny. Przykład, zaktualizowany odnośnik, coś, co nie jest książką na v1.5 ... –

1

Tak, możesz. Problem, o który pytasz, został rozwiązany w Subversion 1.8.

Począwszy SVN 1.8, --reintegrate opcja jest przestarzałe i reintegrację scala są teraz wykonywane automatycznie (lub automagicznie:)). Zobacz Subversion 1.8 Release Notes i czytać zaktualizowaną SVNBook 1.8 | Reintegrating a branch rozdział:

Jeśli nie chcesz usunąć oddziału po reintegracji go do bagażniku można nadal wykonywać Sync łączy się z pnia, a następnie reintegracji kolejny oddział.Jeśli to zrobisz, tylko zmiany dokonane na Twojej gałęzi po pierwszej reintegracji zostaną scalone z pniem.

...

Tylko Subversion 1.8 obsługuje tę ponowne oddziału funkcji. Wcześniejsze wersje wymagają specjalnej obsługi, zanim gałąź funkcji może zostać ponownie zintegrowana więcej niż raz. Zobacz wcześniejszą wersję tego rozdziału uzyskać więcej informacji: http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

WAŻNE:Należy uaktualnić klienta Subversion i serwera, jeśli nadal używać Subversion 1.7 lub starszą. Aktualna i najlepsza wersja SVN wynosi 1.9 od 2016 r. Nie ma prawdziwego powodu, aby używać bardzo starych wersji Subversion, takich jak 1,5, 1,6 lub nawet 1,7. Od wersji 1.6 wprowadzono wiele usprawnień po stronie klienta i serwera!