Czy gałąź zwolnienia czy gałąź główna powinna być oznaczona, gdy używany jest gitflow?

16

Ten problem wskazuje, że:

Z mojego zrozumienia, umieszczenie znacznika w gałęzi release przed scaleniem (a nie w gałęzi master) jest w rzeczywistości słuszne, więc można to znaleźć za pomocą git opisz - tagi z gałęzi developerskiej. Zobacz # 374

podczas gdy inny post :

Dzisiaj przypadkowo zainstalowałem wersję 0.4.2 pre przez homebrew i byłem zdezorientowany sposobem tagowania w tej wersji. Wcześniej (wersja 0.4.1) znacznik był tworzony w gałęzi master, po scaleniu gałęzi wydania. Teraz wydaje się, że tag jest tworzony przy ostatnim zatwierdzeniu gałęzi wydania, co nie wydaje mi się dobrym pomysłem. Zwłaszcza jeśli masz system kompilacji, który opiera się na tagach git i tworzy wersję, jeśli HEAD jest zatwierdzonym tagiem i wersją programistyczną, jeśli jest to jeden z poniższych zatwierdzeń. Czy ktoś mógłby mi wyjaśnić logikę tej zmiany? A w odniesieniu do wersjonowania semantycznego nie uważałbym tego za bump wersji na poziomie łatek!

W naszym zespole przeprowadziliśmy i rozmawialiśmy na ten temat. Niektóre wskazują, że należy utworzyć znacznik z gałęzi master, podczas gdy inni wolą gałąź release. Zgodnie z obrazem gitflow:

wprowadź opis zdjęcia tutaj

wygląda na to, że tag jest umieszczony na wzorcu.

030
źródło
1
Wiem, że GitLab zmaga się ze znacznikami na gałęziach, gdy przycinasz starsze gałęzie, więc byłoby lepiej, gdyby znacznik znajdował się w systemie głównym. Nie jestem pewien co do innych narzędzi git.
HorusKol
„Gitflow” oznacza, że ​​ten przepływ pracy (słaba IMO) jest standardowym lub oficjalnym przepływem pracy git. To nie jest
Miles Rout,
@MilesRout Jaki jest twój ulubiony przepływ pracy na git?
030
w moim przypadku używam wartości tagu git, aby nazwać wersję aplikacji po wydaniu, więc robię to w gałęzi wydania.
Pomyśl raz kod raz

Odpowiedzi:

16

Po pierwsze, nie można oznaczać gałęzi, można tylko oznaczać zatwierdzenia.

Powinieneś oznaczyć zatwierdzenie, które faktycznie wypuszczasz. Taki jest sens zatwierdzania wersji. Jeśli masz problem ze swoim oprogramowaniem w jakimś środowisku (produkcyjnym lub innym), możesz śmiało powiedzieć, że problem został wprowadzony przez zatwierdzenie, z którego pochodzi ta wersja.

(Dlatego ludzie mówią o „odtwarzalnych kompilacjach”: aby mieć pewność, że proces ich wydania nie wprowadza nowych błędów, których nie było w ich środowisku podglądu / przemieszczania, i że jeśli mają błąd w produkcji, to samo plik binarny działa na ich komputerze, kiedy idą go debugować.)

Nie ma sensu oznaczać drugiego zielonego zatwierdzenia od dołu (zielone dziecko zatwierdzenia oznaczone „Tylko poprawki błędów!”) Jako „v1.0”, ponieważ nie wydaliście tego zatwierdzenia do produkcji. Zwolniłeś zatwierdzenie na master. Możesz nawet zobaczyć, że git flow oznaczył to jako „Tag 1.0”.

Pamiętaj, że tagi mają cel: łatwe znajdowanie zatwierdzeń. Zatwierdzasz tag jako „v1.0”, aby łatwo znaleźć rzecz wydaną jako wersja 1.0. Nie tagujesz go ze względu na to, że masz gdzieś w drzewie zatwierdzeń tag v1.0, niejasno w pobliżu zatwierdzenia, które faktycznie wydałeś.

Jeśli masz problemy ze znalezieniem tagów z gałęzi programistycznej, jest to zupełnie osobny problem. Napraw narzędzie, którego używasz do znajdowania tagów. Lub jeszcze lepiej: nie używaj git-flow. Na tym schemacie wygląda ładnie z powodu uroczych kolorowych kropek i ładnie ułożonych linii, ale w rzeczywistości wygląda jak szalona, ​​brudna sieć kolorowych linii i kropek.

Miles Rout
źródło
3
You should tag the commit you actually release. Więc jeśli na przykład 20 zatwierdzeń, które muszą zostać zwolnione, znajdują się w gałęzi wydania, a gałąź ta jest scalona z wzorcem, utworzony zatwierdzenie scalania musi zostać otagowane, aby wiedzieć, co zostało wydane?
030
1
Tak, zatwierdzenie scalania zostanie oznaczone. Jako wariant git-flow widziałem także tworzenie / tagowanie osobnego „zatwierdzenia guza wersji” bezpośredniobranch:master
rmharrison