Jon Purdy ma dobry pomysł. git flowuł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- gitperspektywy. Rozważ gitnastępujące kwestie:
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
Powyżej rozgałęziasz mastersię develop(oznaczony przez \) i rozgałęziasz developsię na featureoddział. 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 developrozgałęziony z master. Wykryty błąd masterzostał naprawiony przez odgałęzienie master, naprawienie go i ponowne połączenie master. Następnie połączyliśmy się masterw develop, a następnie developwfeature2 , który wprowadził nowy kod z hotfixtych gałęzi.
Po feature2ponownym połączeniu się develop, jego historia obejmuje developtakże hotfix. Podobnie developjest połączyły się feature2z nowym kodem z master, więc łączenie developz powrotem masterstanie się gładko, jak to jest w oparciu o które zobowiązują się masterw tym czasie-jak gdybyś rozgałęzionego od masterw 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 hotfixoddział w 1.3-I w 1.2, 1.1i 1.0. Nie rozgałęziaj się w każdym z oddziałów wersji konserwacji; nie łączą 1.0się masterani nie łączą z masterpowrotem 1.0. Weź jedną hotfixgałąź 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 diffjest 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.3głowę jako 1.3.17, połącz ją ze wszystkimi rozwijanymi funkcjami 1.3i przejdź dalej.
git flowPrzedł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.
gittagu po każdej udanej kompilacji? Miałoby to tę dodatkową zaletę, że wyjaśnia, któregitzatwierdzenia mają problemy z kompilacją lub testami, ponieważ pozostałyby one nieoznaczone.