Mój zespół używa SVN do zarządzania kontrolą swojego źródła. Otrzymałem zadanie sprawdzenia, czy istnieje jakakolwiek poprawa sposobu, w jaki używamy SVN.Używanie SVN z wieloma wersjami rozwojowymi
Przeczytałem wiele książek o SVN i zrobiłem wiele badań nad tym, jak inni używają SVN.
Mam zamiar dać przegląd, jak używamy svn i mam nadzieję, że ktoś ma kilka sugestii dla mnie.
Przede wszystkim mamy wydanie co miesiąc lub dwa. Obecnie używamy pnia jako naszej kopii produkcyjnej kodu i tworzymy gałąź wydania dla każdego zaplanowanego dostarczania i dla każdej poprawki produkcyjnej.
Zwykle mamy dwie, czasami trzy zaplanowane dostawy w tym samym czasie. Na przykład mogę kodować wydanie 3, ale ja lub inni testujemy wersję 2 i robimy końcowe poprawki dla wydania 1. Może również występować jednocześnie naprawa produkcyjna.
W tej chwili wykonujemy wiele scaleń, aby zachować synchronizację gałęzi (każdego wydania). Wersja 3 wymaga kodu z 2 i 1, ale oczywiście nie chcemy, aby nowy kod z wydania 3 trafił do wersji 1. Tak więc chcielibyśmy przeprowadzić serię scaleń od wersji 1 do wersji 2 i od wersji 2 do wersji 3. musiałyby być regularnie powtarzane, aby kodery w wersji 3 miały poprawki z 2 lub 1.
Ilekroć wprowadzana jest poprawka lub poprawka produkcyjna, scalamy kod z powrotem w bagażniku. Następnie łączymy go z pnia (lub gałęzi zwalniającej, która właśnie trafiła do produkcji) we wszystkie aktywne gałęzie.
Jak można zauważyć, spędzamy dużo czasu na łączeniu.
To dużo pracy dla osoby kontrolującej kontrolę źródła. Ciągle robią fuzje i upewniają się, że śledzą, które filie są połączone w miejscu.
Wygląda na to, że SVN jako nasz system zarządzania kontrolą źródła (wiem, że to naprawdę tylko kontrola wersji, ale używamy go do zarządzania naszą kontrolą źródła) powinien nam w tym pomóc.
Na przykład byłoby wspaniale, gdyby programista pracujący nad wydaniem 3 wiedział, kiedy coś zmieniło się w wersji 2, wydaniu 1 lub w kufrze, a programista mógł zostać automatycznie powiadomiony i mógł wykonać scalenie, aby wprowadzić zmiany w jego oddział. Ale zamiast tego ktoś musi wiedzieć, aby wykonać wszystkie scalenia ręcznie ... Wygląda na to, że człowiek robi zbyt wiele pracy i maszyna nie robi wystarczająco dużo.
Czy ktoś ma pomysły na to, w jaki sposób możemy lepiej wykorzystać funkcje SVN, abyśmy mogli zaoszczędzić sobie trochę tego bólu głowy i upewnić się, że wszyscy zawsze pracują z wersjami kodu, które mają być!
Dzięki!
Co to jest _release_ w twoim kontekście? Pewny, ustalony zestaw funkcji, które __must__ są dostarczane w jednej partii, a termin jest nieco elastyczny, lub określony, ustalony termin, w którym funkcje mogą się różnić? –
Naprawiono datę, jeśli funkcji nie można ukończyć, a następnie przenosimy je do następnej wersji. Są to zintegrowane wydania, moja grupa jest jedną z niewielu, które wydały kod w tym samym harmonogramie. Poprawki w produkcji wyglądają tak, jak się zdarzają. Popychamy je do produkcji oddzielnie w oparciu o priorytet itd. ... – kralco626