Chociaż jest to podobne do wątku Git-flow and master with multiple parallel release-branches i What's best way to work with git on multiple master branch?, to nie jest całkiem identyczne ... Stwierdziłem, że ten jest podobny: Multiple projects with same GIT master, ale chcę omówić mój konkretny przypadek użycia ...Gitflow z wieloma gałęziami wzorcowymi
Firma, w której pracuję, jest w trakcie opracowywania zasad i procedur dla naszego przepływu pracy Git. Chcemy użyć modelu "Gitflow", jak opisano w artykule http://nvie.com/posts/a-successful-git-branching-model/ lub https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow i jest on powszechnie stosowany w wielu dyskusjach na ten temat.
Mamy jednak przypadek użycia z wymaganiem, dla którego nie mogę znaleźć rozwiązania udokumentowanego. Co się stanie, jeśli twój projekt zostanie wykorzystany do wytworzenia więcej niż jednego produktu końcowego? Oddział główny nie może zatem reprezentować "punktów uwolnienia", jak gdyby był to pojedynczy produkt. Wygląda na to, że od kapitana potrzebne mogą być kolejne gałęzie? A więc wiele oddziałów o równoległym uwalnianiu?
Na przykład, jeśli projekt działa jako szkielet lub silnik do czegoś, co może mieć różne skórki, smaki lub odmiany, ale chcesz, aby każdy z końcowych produktów końcowych przechowywany był w jednym repozytorium?
W moim szczególnym scenariuszu, mam program, który działa na serwerze Linux, ale jest również dystrybuowany jako lokalna aplikacja Windows. W tych różnych wersjach istnieją duże fragmenty projektu, które mogą lub nie mogą być zawarte w jednym lub w innych wydaniach. Przykładowo na serwerze znajdują się biblioteki, których nie trzeba uwzględniać, jeśli repo dotyczyło tylko serwera, ale które należy uwzględnić w lokalnej dystrybucji, gdzie w przeciwnym razie nie istniałyby. Chcę pobrać aktualizację repo na serwer w określonych punktach wydania, ale pomiń takie części, które do niego nie należą.
Czy z gałęzi głównej utworzę gałąź "Wydanie serwera" i "Lokalne wydanie"?
Skąd się wzięła gałąź rozwojowa (i jej funkcje)? Nie chcę wielu gałęzi rozwojowych, z których każda pochodzi z własnej wersji, ponieważ rozwój kodu w rzeczywistości dotyczy 99% tych dwóch. Czy muszę scalić pojedynczą gałąź dev w jedną, a następnie drugą wersję?
Zgadzam się. Jeśli kod jest mniej więcej taki sam, dodaj jedno repozytorium i po prostu dodaj inne skrypty/narzędzia wdrażania (np. 'Ant'files) do tego repozytorium. Git-Flow powinien tutaj dobrze działać. – mstrap
Dzięki mvd. To pomaga. Nadal uczę się o tym modelu rozgałęzień i byłem wyraźnie sprowadzony na złą drogę do Gitflow, patrząc na źródła wtórne.Patrząc na pierwotne źródło, zobaczyłem, jak gałęzie uwalniania są tymczasowe i przestają się rozwijać. Miałem jednak, że uwolnienie było stałym człowiekiem, który pierwotnie pochodził od mistrza, a następnie dev pochodzi z tego. W rezultacie moje proponowane rozwiązanie zostało całkiem zmuckowane. Podoba mi się pomysł 2 oddziału głównego. Jest podobny do tego, co naprawdę miałem na myśli. Rozmawiam teraz z zespołem tutaj o tym. Będę oprócz tej odpowiedzi, jeśli zrealizujemy twój plan. – BuvinJ
Istnieją inne modele, w których gałęzie wyzwolenia są długowieczne. Praca zaczyna się rozwijać, zostaje scalona w master (gdy jest już wystarczająco stabilna do przetestowania), a gałąź wydania otrzymuje rozgałęziony wzorzec, gdy znacznik .0 jest oznaczany. Nie myśl, że musisz iść z git-flow, ponieważ jest popularny! Masz wyjątkową sytuację, a na końcu powinieneś wybrać strategię, która najlepiej pasuje do Twojej firmy. – mvd