2009-01-01 11 views
7

Typowym scenariuszem podczas korzystania z kontroli kodu źródłowego jest posiadanie gałęzi rozwojowej wraz z wersjami gałęzi wersji. Używamy CVS, z HEAD jako gałęzią rozwojową i oddziałem o nazwie np. release-6-2 dla bieżącej wersji produktu.Praktyczny sposób zatwierdzania zmian w kontroli kodu źródłowego dla wielu gałęzi

Opracowywanie nowych funkcji jest dostępne tylko w gałęzi rozwojowej, ale poprawki błędów muszą być czasami sprawdzane zarówno w gałęzi rozwojowej, jak iw bieżącej gałęzi wydania. Czasami może to być dość nudne, więc szukam praktycznych sposobów, aby to osiągnąć.

Gdy plik do zatwierdzenia jest zsynchronizowany w dwóch oddziałach, w szczególności szukam szybkiego rozwiązania "zobowiązuj się do tych oddziałów".

(Używamy CVS jako naszego systemu sterowania źródłami, więc wszelkie odpowiedzi związane z CVS są miłe, ale interesujące jest również sprawdzenie, czy inne systemy kontroli kodu źródłowego mogą zaoferować lepszy sposób: Po stronie klienta korzystamy z platformy Eclipse , więc rozwiązania Eclipse są dobre, ale jeśli masz rozwiązanie inne niż Eclipse, to też jest w porządku.)

Odpowiedz

9

Zastosuj poprawkę do najstarszego wymaganego oddziału wydania. Następnie połącz zmianę z następną gałęzią wydania i tak dalej, aż połączenie z ostatniej gałęzi wydania do HEAD.

Powiedz, że najstarsza wersja twojego produktu to 1.0, a także masz wersje 1.1 i 1.5. Nowe funkcje dla następnej wersji są dodawane do HEAD. Jeśli błąd znajdzie się w wersji 1.0, zastosujesz poprawkę do gałęzi 1.0. Scal od wersji 1.0 do gałęzi 1.1. Połącz się z 1.1 do gałęzi 1.5, a na końcu połącz się z odgałęzieniem 1.5 do HEAD.

Scalanie z gałęzi do oddziału jest lepsze niż ręczne stosowanie poprawki do każdego oddziału.

Przy pomocy CVS musisz ręcznie śledzić, które wersje są połączone, aby nie uwzględniać tych samych wersji podczas następnego scalania.

Po zmianie na Subversion scalenie z gałęzi do oddziału jest łatwiejsze. Narzędzie subwersji Eclipse będzie na bieżąco śledzić, które wersje zostały wcześniej scalone, co znacznie uprości zadanie wykonywania powtórnych scaleń między dwoma oddziałami.

Zmiana na Subversion z CVS jest łatwa (ish). Nie będziesz pierwszym, który wykonał taki ruch.

4

Tak jak powiedział awalshe, lepiej połączyć się między gałęziami. Cherry-pick do korespondencji seryjnej, sposób opisany w Pragmatic Version Control using CVS jest bardzo dobra:

W branży - tag (PRE_FOO) przed zmianą, dokonać zmian i zobowiązać się, tag po zmianie (POST_FOO). Następnie, w bagażniku, łączenie za pomocą tagów:

cvs up -j PRE_FOO -j POST_FOO 

scalanie między oddziałami jest znacznie łatwiejsze i bezpieczniejsze w SVN, a to trywialne przekonwertować całą historię CVS do SVN - patrz cvs2svn. Powinieneś używać albo SVN 1.5, albo - z wcześniejszymi wersjami SVN - svnmerge.

Powiązane problemy