Niedawno zaczęliśmy korzystać z GitLab.
Obecnie używam „scentralizowanego” przepływu pracy.
Rozważamy przejście na github-flow, ale chcę się upewnić.
Jakie są wady i zalety Git-Flow i Github-Flow ?
Niedawno zaczęliśmy korzystać z GitLab.
Obecnie używam „scentralizowanego” przepływu pracy.
Rozważamy przejście na github-flow, ale chcę się upewnić.
Jakie są wady i zalety Git-Flow i Github-Flow ?
Odpowiedzi:
Jak omówiono w 17 odcinku GitMinutes, Nicholas Zakas w swoim artykule na temat „ Przepływy pracy GitHub wewnątrz firmy ”:
Git-flow to proces zarządzania zmianami w Git, który został stworzony przez Vincenta Driessena i towarzyszy mu kilka rozszerzeń Git do zarządzania tym przepływem.
Ogólną ideą git-flow jest mieć kilka oddzielnych oddziałów, które zawsze istnieją, każdy w innym celu:master
,develop
,feature
,release
, ihotfix
.
Proces tworzenia funkcji lub błędów przechodzi z jednej gałęzi do drugiej, zanim zostanie ostatecznie wydana.Niektórzy respondenci wskazali, że używają
git-flow
w ogóle.
Niektórzy zaczęligit-flow
i odeszli od niego.Głównym powodem odejścia jest to, że
git-flow
proces ten jest trudny do wykonania w modelu ciągłego (lub prawie ciągłego) wdrażania.
Ogólne wrażenie jest takie, żegit-flow
działa dobrze w przypadku produktów w bardziej tradycyjnym modelu wydawania, w którym publikacje są wydawane raz na kilka tygodni, ale proces ten znacznie się psuje, gdy publikujesz je raz dziennie lub częściej .
W skrócie:
Zacznij od modelu tak prostego, jak to tylko możliwe (jak zwykle w przypadku przepływu GitHub) i przejdź do bardziej złożonego modelu, jeśli zajdzie taka potrzeba.
Możesz zobaczyć interesującą ilustrację prostego przepływu pracy opartego na GitHub-Flow pod adresem:
„ Prosty model rozgałęzienia git ”, którego głównymi elementami są:
master
musi być zawsze możliwe do rozmieszczenia.- wszystkie zmiany dokonane za pośrednictwem gałęzi funkcji (żądanie ściągnięcia + scalanie)
- rebase w celu uniknięcia / rozwiązania konfliktów; połączyć się z
master
Aby uzyskać bardziej kompletny i niezawodny przepływ pracy, zobacz gitworkflow (jedno słowo) .
Nie ma przepływu pracy, w którym każdy powinien się kierować, ponieważ wszystkie modele są nieoptymalne. Powiedziawszy to, możesz wybrać odpowiedni model dla swojego oprogramowania na podstawie poniższych punktów;
Wiele wersji w produkcji - użyj Git-flow
Jeśli Twój kod ma wiele wersji w produkcji (np. Typowe produkty programowe, takie jak systemy operacyjne, pakiety biurowe, aplikacje niestandardowe itp.), Możesz użyć git-flow. Głównym powodem jest to, że podczas opracowywania następnej wersji musisz stale wspierać poprzednie wersje w produkcji.
Pojedyncza wersja w produkcyjnym prostym oprogramowaniu - użyj Github-flow
Jeśli Twój kod ma tylko jedną wersję produkcyjną przez cały czas (tj. Strony internetowe, usługi internetowe itp.), Możesz użyć github-flow. Głównym powodem jest to, że nie musisz robić skomplikowanych rzeczy dla programisty. Gdy programista ukończy funkcję lub naprawi błąd, zostanie natychmiast przeniesiony do wersji produkcyjnej.
Pojedyncza wersja w produkcji, ale bardzo złożone oprogramowanie - użyj Gitlab-flow
W przypadku dużego oprogramowania, takiego jak Facebook i Gmail, może być konieczne wprowadzenie gałęzi wdrażania między oddziałem a oddziałem głównym, w którym mogłyby działać narzędzia CI / CD>, zanim trafi do produkcji. Chodzi o to, aby do wersji produkcyjnej wprowadzić większe zabezpieczenia, ponieważ są używane przez miliony ludzi.
Używam modelu git-flow od ponad roku i jest w porządku.
Ale to naprawdę zależy od tego, jak Twoja aplikacja zostanie opracowana i wdrożona.
Działa dobrze, gdy masz aplikację, która ma powolny przepływ programowania / wdrażania.
Ale na przykład tak jak GitHub mamy aplikację, która ma szybki przepływ rozwoju / wdrażania, wdrażamy codziennie, a czasem kilka razy dziennie, w tym przypadku git-flow ma tendencję do spowolnienia wszystkiego moim zdaniem, a ja używam GitHub pływ.
Inną rzeczą do rozważenia jest to, że git-flow nie jest standardowym gitem, więc możesz, a kiedy powiem, że możesz, naprawdę mam na myśli, że znajdziesz programistów, którzy tego nie wiedzą, a potem jest krzywa uczenia się, więcej szansa na zepsucie rzeczy. Jak wspomniano powyżej, ktoś opracował zestaw skryptów, aby ułatwić korzystanie z git-flow, więc nie musisz pamiętać wszystkich poleceń, pomoże ci on przy poleceniach, ale zapamiętywanie faktycznego przepływu jest twoją pracą , Spotykałem się więcej niż raz, kiedy programista nie wiedział, czy to poprawka, czy funkcja, a nawet gorzej, gdy nie pamiętają przepływu i rzeczy.
Istnieje co najmniej jeden interfejs graficzny obsługujący git-flow dla komputerów Mac i Windows SourceTree .
Obecnie skłaniam się bardziej w stronę przepływu GitHub, ze względu na jego prostotę i łatwość zarządzania. Ponadto z powodu „częstego wdrażania wczesnego wdrażania” ...
Mam nadzieję że to pomoże
git flow release...
w połączeniu z akcjami github wdrożyć aplikację. W mojej oryginalnej odpowiedzi wspomniałem, że publikowaliśmy wiele razy dziennie, co powodowało problemy podczas korzystania z git-flow. Powodem, dla którego myślę, że git-flow będzie dobrze działał w tym projekcie, jest to, że mamy wstępnie zdefiniowany cykl wydawniczy, który jest jednym z głównych punktów sprzedaży przy korzystaniu z git-flow.