Jon Purdy ma dobry pomysł. git flow
ułatwia również faktyczne zarządzanie tymi oddziałami, a zarządzanie oddziałami jest argumentem przemawiającym za przejściem do git
.
Zacznijmy od podstawowego podsumowania git
, ponieważ przychodzisz z perspektywy svn
-to- git
perspektywy. Rozważ git
następujące kwestie:
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
Powyżej rozgałęziasz master
się develop
(oznaczony przez \
) i rozgałęziasz develop
się na feature
oddział. Scalamy te gałęzie z powrotem (oznaczone przez /
), z commits ( -
) wzdłuż gałęzi. (Jeśli nie ma zatwierdzenia, ale scalenie jest po prawej stronie, istnieją .
wskaźniki wskazujące, że następne -
jest następne zatwierdzenie).
Wystarczająco łatwe. Co jeśli mamy poprawkę w naszym głównym wydaniu?
master--...............-.....-................-...........-.........-
\ / / / \ /| /
\ / / / -hotfix-- V /
---develop---------............../..............-...----
\ / \ V /
--feature--- --feature2...----
Powyżej develop
rozgałęziony z master
. Wykryty błąd master
został naprawiony przez odgałęzienie master
, naprawienie go i ponowne połączenie master
. Następnie połączyliśmy się master
w develop
, a następnie develop
wfeature2
, który wprowadził nowy kod z hotfix
tych gałęzi.
Po feature2
ponownym połączeniu się develop
, jego historia obejmuje develop
także hotfix
. Podobnie develop
jest połączyły się feature2
z nowym kodem z master
, więc łączenie develop
z powrotem master
stanie się gładko, jak to jest w oparciu o które zobowiązują się master
w tym czasie-jak gdybyś rozgałęzionego od master
w tym momencie.
Oto inny sposób na zrobienie tego.
master--..........-........-
\ /\ /
---1.0-- --1.1--
Twoje 1.0 uwalnia się tagged- 1.0.1
, 1.0.2
, 1.0.3
, i tak dalej.
Oto sztuczka: znalazłeś błąd w wersji 1.0 i dotyczy on wersji 1.1, 1.2 i 1.3. Co robisz?
Odgałęziasz swoją najnowszą lub najwcześniej utrzymaną wersję i naprawiasz ją. Następnie należy połączyć swój nowy hotfix
oddział w 1.3
-I w 1.2
, 1.1
i 1.0
. Nie rozgałęziaj się w każdym z oddziałów wersji konserwacji; nie łączą 1.0
się master
ani nie łączą z master
powrotem 1.0
. Weź jedną hotfix
gałąź i połącz ją ze wszystkimi gałęziami wersji. Jeśli wystąpią konflikty, powie ci; sprawdź swój kod, aby upewnić się, że zmiany są poprawne ( git diff
jest twoim przyjacielem).
Teraz ta konkretna zmiana jest stosowana wszędzie. Ród jest rozgałęziony, ale jest w porządku. To nie jest przypadkowe. Oznacz 1.3
głowę jako 1.3.17, połącz ją ze wszystkimi rozwijanymi funkcjami 1.3
i przejdź dalej.
git flow
Przedłużenie pomaga zarządzać tymi konserwacji, funkcji i oddziały poprawki dla Ciebie. Po wyłączeniu przepływu pracy jest to trywialne i sprawia ogromne problemy z zarządzaniem kodem źródłowym.
Widziałem to w zespołach programistycznych, ale sam nie pracowałem tak głęboko jako programista, więc sam wciąż skupiam się na codziennej pracy.
git
tagu po każdej udanej kompilacji? Miałoby to tę dodatkową zaletę, że wyjaśnia, któregit
zatwierdzenia mają problemy z kompilacją lub testami, ponieważ pozostałyby one nieoznaczone.