Całkowicie zgadzam się z @Mot.
Miło słyszeć te same pytania.
Nasz zespół był również poszukiwany na bardziej uniwersalny model rozgałęziania niż Successfull . To znaczy, jak wspomniano powyżej @Mot - głównym pomysłem jest uniknięcie wprowadzania dodatkowych repozytoriów do obsługi gałęzi release- * w oddzielnym repozytorium * .git, jak na przykład robi to kernel.org dla stabilnych wydań. Ale kernel.org robi to w celu zminimalizowania pobieranych rozmiarów, jak sądzę.
Wydaje mi się, że łatwiej jest mieć mistrza jako główną linię rozwoju .
Istnieją również pewne konflikty w łączeniu modelu wydania * do mastera i oznaczaniu go później pomysłem
użyj skryptu przechwytującego Git, aby automatycznie budować i wdrażać nasze oprogramowanie na nasze serwery produkcyjne za każdym razem, gdy nastąpiło zatwierdzenie na serwerze głównym
ponieważ zakończenie (scalanie i tagowanie) nie jest transakcją atomową:
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff release-1.2
Merge made by recursive.
(Summary of changes)
$ git tag -a 1.2
a jeśli git hook rozpocznie kompilację z automatyczną obsługą wersji:
$git describe --tags --long >.ver
wtedy można zbudować błędną wersję dla:
$ git merge --no-ff release-1.2
Wiem, że wersjonowanie w wersji Successfull wprowadza jakiś proces wersji bump,
ale nie jest to automatyczne.
Podsumowując - kluczowe różnice, które wprowadzamy do modelu gałęzi dla wydań - * scalanie i tagowanie to: - oznaczanie wydania podczas tworzenia gałęzi - zachowanie gałęzi wydania, aby umożliwić jej utrzymanie w przyszłości