2012-03-23 17 views
6

Jestem trochę ciekawy, w jaki sposób wykorzystuje się informacje o scalaniu w Subversion i jakie problemy można napotkać, jeśli informacje o scaleniu są niepoprawne?Subversion łączy informacje, jak ważne jest to?

Na przykład, rozgałęziłem branch1 i branch2 z trunk. Mam również subbranch1 i subbranch2 pochodzących z branch1. Rozważ, że zrobiłem kilka zmian w branch2, a następnie ponownie zintegruję go z powrotem w bagażniku przy użyciu svn merge --reintegrate ^/branch2. Następnie chciałem również dodać te zmiany do subbranch1 (wyciągając je z trunk) i omyłkowo użyto polecenia, svn merge --reintegrate ^/trunk (dodając w ten sposób także flagę --reintegrate do polecenia scalania, mimo że subbranch1 nie jest bezpośrednim przodkiem trunk).

Jakie problemy mogą mieć tę przyczynę w przyszłości?

Odpowiedz

2

Ta odpowiedź jest przestarzała. Użyj Subversion> = 1.6.


Ty podejście rozgałęzienia jest niebezpieczne w ogóle, ale z powodu wypadku to jeszcze gorzej.

Pojawi się wiele problemów podczas reintrackowania wszystkich oddziałów.

  • Zmiany wprowadzone przez branch2 mogą wyglądać jak skreślenia do subversion.
  • Usunięcia dokonane przez Ciebie mogą wyglądać jak dodatki do subversion.
  • trójdrożny-comparsion może dać dziwne wyniki (oddanie tego samego fragmentu kodu dwukrotnie w pliku na przykład)

nie można ufać w trójdrożny-comparsion więcej, trzeba sprawdzić każdy Zmień ręcznie!

Aby uzyskać więcej informacji, patrz What mother never told you about svn branching and merging.

P.S. Musiałem kiedyś coś takiego naprawić. Od tego czasu używamy skakania króliczków (patrz link).

+0

Po wpisie na blogu, nie sądzę, że Bunny Hopping jest niezbędny od SVN 1.5, który śledzi tego rodzaju rzeczy dla ciebie. – hdgarrood

+0

SVN 1.5 naprawił niektóre problemy, ale jeśli dużo się scalisz i rozgałęzisz, wpadniesz w kłopoty. –

+0

Bunkier-hop nie jest wymagany. Jest to obejście złych praktyk SVN. Dlaczego ludzie oczekują, że scalenie będzie proste, jeśli zamierzają zrobić DUŻO zmian w bagażniku ORAZ w oddziale? (Szczególnie w tym samym kodzie!) – exception

3

informacji Merge śledzi następujące informacje:

  • stosunkach między oddziałami (subbranch1 pochodzi z branch1, który pochodzi z trunk itp)
  • Jakie zmiany zostały już połączone

Jeśli brakuje informacji o scaleniu lub jest ona niepoprawna, musisz ręcznie śledzić połączenia, co może być podatne na błędy. Korzystając z informacji o scalaniu, pozwalasz Subversion śledzić wszystkie te informacje.

Powiązane problemy