2013-08-12 16 views

Odpowiedz

95

Jak omówiono w GitMinutes odcinku 17, przez Nicholas Zakas w swoim artykule w „GitHub workflows inside of a company”:

Git-flow jest proces zarządzania zmianami w Git, który został stworzony przez Vincenta Driessen i towarzyszy jakiś Git extensions do zarządzania, które pływ.
Ogólną ideą git-flow jest mieć kilka oddzielnych oddziałów, które zawsze istnieją, każdy w innym celu: master, develop, feature, release i hotfix.
Proces rozwoju funkcji lub błędów przepływa z jednej gałęzi do drugiej, zanim zostanie ostatecznie wydany.

Niektórzy respondenci wskazali, że ogólnie używają git-flow.
Niektóre zaczęły się od git-flow i zostały przeniesione z tego miejsca.

Głównym powodem odejścia jest to, że proces git-flow jest trudny do rozwiązania w ciągłym (lub prawie ciągłym) modelu wdrażania.
Ogólne wrażenie jest takie, że działa dobrze w przypadku produktów w bardziej tradycyjnym wydaniu, w których wersje są wykonywane raz na kilka tygodni, ale proces ten ulega znacznemu przerwaniu w przypadku wydawania jednego lub więcej dni dziennie lub więcej:.

W skrócie:

start z modelem jak najprostsze (jak przepływ GitHub bywa) i przesunąć w kierunku bardziej złożonego modelu, jeśli trzeba.


można zobaczyć ciekawą ilustrację prosty workflow, opartego na GitHub-Flow w:
"A simple git branching model", z którego głównymi elementami są:

  1. master musi zawsze być w użyciu.
  2. wszystkie zmiany dokonane za pośrednictwem oddziałów elementów (pull-request + merge)
  3. rebase w celu uniknięcia/rozwiązania konfliktów; łączyć w celu master

https://a248.e.akamai.net/camo.github.com/9783623eba280ba5ace8b9e63842be52af2f0546/687474703a2f2f7374617469632e62656e65742e61692f736b697463682f666c6f772d32303133303932362d3139333431392e706e67

25

Używam git modelu przepływu przez ponad rok i jest ok.

Ale to naprawdę zależy od sposobu, w jaki aplikacja zostanie opracowana i wdrożona.

Działa dobrze, gdy masz aplikację, która ma powolny rozwój/wdrożenie.

Ale na przykład, podobnie jak GitHub mamy aplikację, która ma szybki rozwój/wdrożenie, uruchamiamy codziennie, a czasem kilka razy dziennie, w tym przypadku git-flow ma tendencję do spowolnienia wszystkiego, co moim zdaniem, i używam przepływu GitHub.

Inną rzeczą, którą należy wziąć pod uwagę, jest to, że git-flow nie jest standardowym gitem, więc możesz, a kiedy powiem, że możesz, naprawdę chodzi mi o to, że znajdziesz programistów, którzy o tym nie wiedzą, a potem pojawia się krzywa uczenia się, większa szansa na zepsucie rzeczy. Jak już 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 w wykonywaniu poleceń, ale pamiętaj, że rzeczywisty przepływ jest twoim zadaniem Spotkałem się nie raz, gdy programista nie wiedział, czy to była poprawka, czy nawet najgorsza, kiedy nie pamiętają przepływu i innych rzeczy.

Istnieje co najmniej jeden graficzny interfejs użytkownika obsługujący git-flow dla komputerów Mac i Windows SourceTree.

W dzisiejszych czasach jestem bardziej skłonny do przepływu GitHub, ze względu na jego prostotę i łatwość zarządzania. Ponadto, ze względu na „wdrożyć wcześnie wdrożyć często” ...

Nadzieja to pomaga

+0

+1. Zgadzam się z Tobą. – VonC

+2

Przepływ GitHub jest w ramach Git-Flow. Pomyśl, jeśli potrzebujesz ciągłej integracji i ciągłego wdrażania, możesz po prostu uruchomić tak dużo, jak to możliwe, z rozwijaną gałęzią. Każda funkcja jest rozgałęziona od gałęzi rozwijającej. Może nie być potrzebna gałąź główna lub gałęzie wydania, chyba że istnieją złożone modele wdrażania. (np. Twoja wersja 1.1 jest na żywo na jakimś kliencie, twój 1.2 jest na żywo na innym kliencie i obecnie rozwijasz 1.3 dla twojego nowego klienta) Wszyscy 3 klienci będą prosić o poprawki i zmiany w ich odpowiedniej wersji. –

39

Nie ma panaceum workflow, gdzie każdy powinien postępować, ponieważ wszystkie modele są nieoptymalne. Powiedziawszy to, możesz wybrać odpowiedni model dla swojego oprogramowania na podstawie poniższych punktów;

Wiele wersji produkcji - wykorzystanie Git-flow

Jeśli kod jest posiadanie wielu wersji w produkcji (tj typowe produkty programowe, takie jak systemy operacyjne, pakiety biurowe, niestandardowe aplikacji, etc.) można używać git-flow. Głównym powodem jest to, że potrzebujesz , aby stale wspierać poprzednie wersje w produkcji, podczas gdy rozwija kolejną wersję.

pojedyncze wersja w produkcji prostych programów - użyj Github-flow

Jeśli kod jest posiadanie tylko jednej wersji w produkcji w każdej chwili (tj stron internetowych, serwisów internetowych, etc.) można użyć Github-flow. Głównym powodem jest to, że nie trzeba skomplikowanych rzeczy dla programisty. Po zakończeniu przez programistę funkcji lub zakończeniu poprawki natychmiastowej jest promowane do wersji produkcyjnej.

Single Version w produkcji, ale bardzo skomplikowane oprogramowanie - używaj Gitlab-flow

Duży oprogramowanie, takie jak Facebook i Gmail, może być konieczne wprowadzenie rozmieszczenia oddziałów pomiędzy swojej branży i gałęzi master gdzie CI/CD> narzędzia mogą działać, zanim dostaną się do produkcji. Pomysł polega na tym, aby wprowadzić więcej ochrony do wersji produkcyjnej, ponieważ jest ona używana przez miliony osób przez .

+3

Po prostu dodajemy "Gitdmz-flow"/"Git DMZ Flow" do listy: https://gist.github.com/djspiewak/9f2f91085607a4859a66 –

+1

Wymienione firmy używają systemu opartego na magistrali. http://paulhammant.com/2014/01/08/googles-vs-facebooks-trunk-based-development/ – PatrickWalker

+1

Git DMZ flow jest bardziej podobny do Gitflow, a DMZ branch to gałąź rozwijająca się. Dlatego nie czuję w tym nic szczególnego. –