SVN 1.5 posiada bardzo miłe wsparcie dla tworzenia gałęzi w repozytorium oraz nanoszania zmian wykonanych tam spowrotem do trunka. Wyklikanie tego w tortoiseSVN zajmuje parę minut (o tym w następnej notce). A przynajmniej powinno – niestety bardzo często dostaję komunikat:
svn: Cannot reintegrate from 'url://feature-branch' yet:
Some revisions have been merged under it that have not been merged
into the reintegration target; merge them first, then retry.
Wiadomość nie podsuwa oczywistego rozwiązania. Pierwszą rzeczą którą sprawdziłem było ponowne uaktualnienie mojej gałęzi trunkiem, ale to nie pomogło.
Rozwiązanie problemu znalazłem na blogu Submerged. Można tam znaleźć dokładne wyjaśnienie, skąd ten błąd (a także kilka ciekawych informacji o samym SVN – polecam). Tutaj tylko szybkie rozwiązanie, które mi zawsze pomaga (operacje wykonujemy na gałęzi):
- W korzeniu kopii roboczej wpisujemy:
svn propget svn:mergeinfo -R
- Powinniśmy dążyć do tego, żeby svn:mergeinfo istniało tylko dla korzenia kopii roboczej, np.:
. – /branches/Foo:2055-2223
- Usuwamy kolejno własność na wszystkich katalogach w głównym katalogu kopii roboczej:
svn propdel svn:mergeinfo -R nazwa_katalogu
- Znowu robimy svn propget svn:mergeinfo -R. Jeżeli widzimy tylko katalog główny (np /trunk, albo /branches/foo) to wszystko jest ok.
Możemy teraz spróbować ponownie zreintegrować naszą gałąź. Powinno działać.
Tags: mergeinfo, svn, svn:mergeinfo
Broń Boże grzebać w propsetach!!!!!!Poza tym błąd jest oczywisty:
1. merge trunk do gałęzi, bo trunk ma zmiany niezłączone z Twoją gałęzią (Twoja gałąź nie jest in sync).
2. commit
3. merge gałęzi z reintegrate do trunk (błąd nie wystąpi).
Wykonaj jak najszybciej sprostowanie, bo ten post jest wysoko pozycjonowany w Google i ktoś może postąpić zgodnie z Twoimi wskazówkami!
Witam,
dziękuję za komentarz.
Proszę zwrócić uwagę na ten zapis w poście:
„Wiadomość nie podsuwa oczywistego rozwiązania. Pierwszą rzeczą którą sprawdziłem było ponowne uaktualnienie mojej gałęzi trunkiem, ale to nie pomogło.”
Niestety nie potrafię „na szybko” odtworzyć problemu, o którym pisałem — na pewno jednak rozwiązanie nie było tak trywialne.
A żeby nie dochodziło do takich sytuacji polecam wykonywać operacje typu merge TYLKO I WYŁĄCZNIE w głównym katalogu gałęzi. Dzięki takiemu postępowaniu nie będziemy mieli mergeinfo na podkatalogach.