Zaczynam od SVN i tak wiele źródeł mówi, że scalanie jest bardzo trudne w SVN w porównaniu do narzędzi DVCS. Do Aktualne pytania mogę znaleźć tutaj na SE są od 2012 roku.
Czasami pojawia się wzmianka, że przyczyną jest to, że SVN przed wersją 1.5 nie miał metadanych, ale SVN jest teraz w wersji 1.8.9.
Biorąc pod uwagę, że SVN jest teraz znacznie bardziej dojrzały niż wersja 1.5, a zwłaszcza fakt, że nie użyliśmy SVN 1.5, więc nie cierpimy z powodu wspomnianego braku metadanych - czy nadal jest wiele trafności w tych argumentach przeciwko SVN?
Rozumiem, że DVCS ma zupełnie inne podejście, które jest często bardziej pożądane, ale dla tych, którzy „muszą” używać SVN z jakiegokolwiek powodu, łączenie nie jest już tak naprawdę „piekłem”, prawda?
version-control
svn
merging
Torben Gundtofte-Bruun
źródło
źródło
Odpowiedzi:
Działa dobrze, jeśli trzymasz się prostych przypadków , ale są pewne skomplikowane, które nie.
Ograniczenia, o których mogę myśleć:
Może znaleźć najnowszego przodka tylko wtedy, gdy znajduje się w jednej z zaangażowanych gałęzi. Więc jeśli tworzysz
branches/this
ibranches/that
zarówno ztrunk
, a następnie spróbuj połączyćbranches/this
siębranches/that
, nie będzie wiedział, co zrobić. Co oznacza, że możesz scalić gałąź tylko z jej rodzica. Możesz się z tym spotkać, jeśli uruchomisz dwie gałęzie funkcji, a później uświadomisz sobie, że funkcje są od siebie zależne i musisz je połączyć.Chociaż twierdzi, że może śledzić zmiany nazw, łączenie gałęzi, gdy pliki zostały przeniesione z jednej strony i zmodyfikowane z drugiej strony, nie zawsze znajduje odpowiednie pliki do scalenia, a ręczne naprawianie jest nieco żmudne, ponieważ nie pozostawia niezbędnych informacji w dowolnym miejscu na dłoń.
Dodane pliki czasami powodują fałszywe konflikty przy późniejszych scaleniach.
Ponieważ subversion nie ma osobnej koncepcji gałęzi, możesz scalić tylko poddrzewo projektu, co może dość szybko doprowadzić do wielkiego bałaganu. Zdecydowanie zaleca się, aby zawsze łączyć pełne gałęzie. Niestety z jakiegoś powodu czasami informacje o scalaniu pojawiają się w podkatalogach, nawet jeśli wydają się zbędne, a scalanie zostało poprawnie wykonane dla całej gałęzi.
Wreszcie jest powolny . Połączenie projektu o dowolnej wielkości często zajmuje kilka minut, a większość DVCS może to zrobić w ciągu sekundy.
źródło
Z mojego doświadczenia wynika, że scalanie w SVN zostało „naprawione” w wersji 1.6. Pracuję zarówno w Mercurial, jak i SVN, a od wersji SVN 1.6 łączenie wydaje się być na takiej samej ilości pracy na obu platformach. Jedynym wyjątkiem może być to, że musisz pamiętać o podaniu
--reintegrate
opcji podczas łączenia z gałęzi z powrotem do linii głównej za pomocą SVN.To tylko moje doświadczenie operacyjne. Nic nie wiem o wewnętrznych elementach SVN.
źródło