Niedawno zacząłem poddawać mój kod kontroli wersji (w laboratorium, nad którym pracuję, pod SVN, a moje własne kody w github (oczywiście z git)). Przed użyciem kontroli wersji robiłem coś takiego. Miałem folder z nazwą biblioteki, w wielu folderach z numerem wersji. Za każdym razem, gdy chciałem zacząć pracować nad nowszą wersją, robiłem kopię ostatniej wersji, zmieniałem nazwę na nową wersję i zaczynałem wdrażanie.
Wydaje się to jednak zbyteczne, gdy folder jest objęty kontrolą wersji. Oprócz redundancji, jeśli ktoś chce uzyskać najnowszą wersję, pobierałby wszystkie wersje, gdyby tylko import
s / clone
s.
Teraz widzę wiele sposobów, aby to zrobić za pomocą kontroli wersji, ale ponieważ jestem nowy, nie wiem, który byłby łatwiejszy w utrzymaniu.
Metoda 1: Używanie tagów
Jeśli poprawnie zrozumiałem tagi, miałbyś swoją główną gałąź, zatwierdzasz każdą wprowadzoną zmianę i otagujesz je wersją. Następnie, gdy chcesz uzyskać jego roboczą kopię, otrzymujesz ten z pewnym znacznikiem. (Popraw mnie, jeśli się mylę)
Metoda 2: Wersje rozgałęziające
W tej metodzie główną gałęzią byłaby gałąź programistyczna. Co jakiś czas tworzona jest stabilna wersja (powiedzmy v1.2.0
), tworzysz gałąź dla tej wersji i nigdy się do niej nie zobowiązujesz. W ten sposób, jeśli chcesz pobrać określoną wersję, otrzymasz kod z tej gałęzi. Chociaż powiedziałem, że nigdy się na to nie zgadzasz, być może możliwe będzie poprawianie błędów i zatwierdzanie w gałęzi starej wersji, aby utrzymać działanie starej wersji. Na przykład, jeśli aktualna wersja jest v2.0
, ale są ludzie, którzy chcą z niej korzystać v1.2
, możesz uzyskać inną gałąź v1.2
, a mianowicie v1.2.1
i zatwierdzić poprawki błędów, lub po prostu zachować tę samą wersję v1.2
i po prostu zatwierdzić poprawki błędów.
Więc oddziały wyglądałyby tak:
v1.2.1 v1.2.2
/ /
v1.0.0 v1.2.0--------- v2.0.0
/ / /
-------------------------------------- dev
W ten sposób masz oddziały dla każdej drobnej aktualizacji wersji. (Należy zauważyć, że na powyższym wykresie v1.2.1 i v2.2.2 lub utworzone po wydaniu v2.0.0, więc nie były częścią rozwoju między v1.2.0 a v2.0.0. Pomyśl o tym jako o pomocy dla starszych wersji)
Metoda 3: Rozwój gałęzi
Ta metoda jest przeciwieństwem poprzedniej. Główną gałęzią byłaby najnowsza stabilna wersja. Ilekroć pracujesz nad nową wersją, tworzysz gałąź (dla programistów), pracujesz nad kodem, a gdy jest stabilny, łączysz go z gałęzią główną.
W takim przypadku gałęzie wyglądałyby tak:
________ ____ ________________ _____ dev
/ \/ \/ \/
---------------------------------- latest_version
Prawdopodobnie trzeba to zrobić w połączeniu z tagami, prawda?
Pytanie!
Tak czy inaczej, moje pytanie jest oparte na twoim doświadczeniu, która z tych metod okazuje się bardziej praktyczna? Czy istnieje znana najlepsza metoda (której prawdopodobnie nie wymyśliłem sam)? Jak często się to robi?