Przepływ pracy Git dla małych zespołów


11

Pracuję nad przepływem pracy git do wdrożenia w małym zespole. Główne pomysły w przepływie pracy:

  • Istnieje wspólny główny projekt, do którego wszyscy członkowie zespołu mogą pisać
  • Cały rozwój odbywa się wyłącznie w gałęziach funkcji
  • Gałęzie obiektów są sprawdzane pod kątem kodu przez członka zespołu innego niż autor oddziału
  • Gałąź funkcji zostaje ostatecznie połączona ze współużytkowanym urządzeniem głównym i cykl rozpoczyna się od nowa

Artykuł szczegółowo wyjaśnia kroki w tym cyklu:

https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/chapter05.md

Czy to ma sens, czy coś pomijam?

Odpowiedzi:


16

Podoba mi się model rozgałęzienia git flow . Gałąź główna pozostaje przez większość czasu sama, zawiera tylko wydania. Gałąź rozwoju powinna być przez cały czas stabilna, a gałęzie cech mogą być zepsute.

Możesz to również połączyć z ciągłą integracją poprzez połączenie develop z gałęzią funkcji i gałęzią funkcji w programowaniu. Oczywiście powinieneś scalić coś w celu rozwoju tylko wtedy, gdy masz pewność, że wszystko działa i nie psuje się.


Jak rozumiem, przepływ git i ciągła integracja są alternatywnymi sposobami pracy i tak naprawdę nie można ich łączyć. W git flow kod jest scalany z wywoływaniem dopiero po ukończeniu funkcji. W ciągłej integracji cały kod jest scalany we wspólną gałąź co najmniej raz dziennie, nawet jeśli nie zapewnia on natychmiast żadnej nowej funkcji.
bdsl

7

Myślę, że brakuje Ci tematu Ciągła integracja. Powinien być częścią każdej konfiguracji programistycznej.

W przypadku gałęzi funkcji masz problem polegający na tym, że nie integrujesz się w sposób ciągły, ale dopiero po zakończeniu operacji.

Jeśli rozgałęziona funkcja jest krótkotrwała, może to być do zaakceptowania, ale jest to z pewnością coś, co należy rozważyć.

Inną alternatywą jest konfigurowanie kompilacji CI dla każdej gałęzi funkcji. To z pewnością pomaga, ale nie jest to integracja. Staje się to oczywiste, gdy znajdziesz swój pierwszy błąd, który nie pojawia się w Funkcji A ani Funkcji B, ale w momencie integracji Funkcji A i B

Trzecią alternatywą jest włączenie scalania w jakiejś gałęzi integracji do kompilacji CI. Jest to prawdziwa integracja i faktycznie działa dość dobrze z git, jeśli praca jest nieco oddzielna, ale powoduje konflikty scalania podczas kompilacji, co powoduje nieudane kompilacje.


Gałęzię główną można połączyć z CI, aby odrzucić scalanie gałęzi funkcji, jeśli nie przejdą automatycznych testów nierejestracyjnych. Dzięki za wskazówkę, dodam na końcu sekcję „Wskazówki” i wspomnę o tym.
Janos

1
Jasne, ale jak już powiedziano, nie jest to integracja ciągła, ale integracja na końcu funkcji, która może być dobra, ale to nie to samo
Jens Schauder,

1
Myślę, że gałęzie cech są bardzo przydatne, ponieważ nie muszą być stabilne. Oznacza to, że możesz często dokonywać zmian zamiast jednego dużego zatwierdzenia.
Arjan

Niezbędny jest zautomatyzowany proces kompilacji, który działa zgodnie z harmonogramem (system CI). Musi działać często, aby problemy z kompilacją można było szybko znaleźć i naprawić. Zespoły programistów powinny nadać niepowodzeniom kompilacji najwyższy priorytet. O wiele łatwiej jest naprawić tego rodzaju problemy, gdy pojawiają się na powierzchni.
Nathan Pilling

1
W przypadku naszych projektów korzystających z CI (mamy kilka starszych projektów, które obecnie nie mogą go użyć), zobowiązujemy WSZYSTKO do opanowania prawdziwego CI, w naszych starszych projektach korzystamy z modelu rozgałęzienia git flow. Gałęzie funkcji są blokerem CI, jeśli mnie o to poprosisz, utrudniają CIĄGŁĄ (nie tylko po zakończeniu) integrację. Cały czas pracujemy nad funkcjami, a ostatecznym zadaniem jest włączenie go w zasadzie, ale kod jest zawsze w projekcie.
Elliot Blackburn,

1

Możesz zainspirować się do gitflow lub Twgit .

gitflow podsumowuje swoje podejście jako:

Rozszerzenia Git, aby zapewnić operacje repozytorium wysokiego poziomu dla modelu rozgałęziającego Vincenta Driessena.

Twgit opisuje się w następujący sposób:

Twgit to bezpłatne i otwarte narzędzie wspomagające zarządzanie funkcjami, poprawkami i wydaniami w repozytoriach Git. Zapewnia proste polecenia wysokiego poziomu do przyjęcia modelu rozgałęziania opisanego w naszej dokumentacji. Obsługiwane systemy operacyjne: Debian / Ubuntu Linux, Mac OS X.

Oba narzędzia są dostępne w github .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.