Przepływ Git - utwórz gałąź funkcji z innej gałęzi funkcji

85

Używam już git flowod jakiegoś czasu. Jestem ciekawy, aby dowiedzieć się o konkretnym przypadku użycia.

Na jeden z moich projektów mam bilet na nową funkcję strony internetowej. Ten bilet zależy od wielu podzadań. Chciałbym utworzyć gałąź funkcji dla biletu głównego, a następnie dla każdego zadania podrzędnego utworzyć gałąź funkcji z gałęzi funkcji nadrzędnej.

Załóżmy, że mam bilet PROJ-500 i tworzę dla niego gałąź funkcji

git flow feature start PROJ-500

Następnie chcę zintegrować bilety PROJ-501przez PROJ-515INTO PROJ-500przed integracji całość w develop. Czy istnieje sposób, bym zrobił coś takiego

git flow feature start PROJ-511 -b PROJ-500

Następnie z biegiem czasu te podzadania są zakończone, a po zakończeniu ich funkcji gałąź jest scalana PROJ-500.

git flow feature finish PROJ-511

Powyższe polecenie połączyłoby PROJ-511się zPROJ-500

A gdy wszystkie pod-zadania zostaną zakończone, PROJ-500zostaną zakończone i połączone w develop.

W ten sposób nowa funkcja strony internetowej jest zintegrowana z programowaniem jako pojedyncza jednostka, a nie fragmentaryczna.

pymarco
źródło
Czy to tego nie robi? git flow feature start PROJ-511 PROJ-500? Link, który zamieściłeś w komentarzu do odpowiedzi DerekS, sugeruje, że tak powinno.
Paul Hicks

Odpowiedzi:

117

Możesz utworzyć gałąź podfunkcji za pośrednictwem

git flow feature start PROJ-511 feature/PROJ-500

Ale nie możesz użyć narzędzia GitFlow do scalenia gałęzi z powrotem do głównej gałęzi funkcji, ponieważ jeśli to zrobisz

git flow feature finish PROJ-511

funkcja zostanie scalona z develop. Podfunkcje Ergo nie są obsługiwane , musisz to zrobić ręcznie.

Alternatywy: wymóg nie jest jednak nowy. Istnieje otwarty problem, a także projekt rozwidlenia, który twierdzi, że obsługuje funkcje wykańczania w gałęziach innych niż develop. Znalazłem również żądanie ściągnięcia z implementacją tej funkcji. Możesz spróbować tej modyfikacji i sprawdzić, czy jesteś z niej zadowolony.


Aktualizacja 2019-12-13: Jak użytkownik Matěj Kříž właśnie wspomniał w swoim komentarzu, użytkownik Tony Chemit napisał tutaj odpowiedź kilka miesięcy po mojej, wskazując na gitflow-avh jako alternatywę dla oryginalnego produktu gitflow. Obsługuje podfunkcje po wyjęciu z pudełka ze składnią pokazaną powyżej. Minęło kilka lat i obecnie edycja AVH jest częścią normalnej instalacji Git dla Windows. Właśnie to zweryfikowałem na moim lokalnym pudełku i przetestowałem opcję podrzędną. Oznacza to, że dla użytkowników systemu Windows działa po prostu po instalacji Git.

kriegaex
źródło
1
@pymarco: Dziękuję za zaakceptowanie odpowiedzi. Jestem jednak ciekawy: czy wypróbowałeś którąś z alternatyw? Jeśli tak, to który z nich i jaki był wynik? Czy działa zgodnie z oczekiwaniami? Może inni czytelnicy mogą się czegoś nauczyć z twojego doświadczenia. :-)
kriegaex
Przepraszam, ale nie miałem czasu do tego wracać. W pewnym momencie spróbuję.
pymarco
3
Dlaczego głos przeciw? Głosy przeciw mają być używane do źle napisanych, niechlujnych odpowiedzi, które nie wskazują na wysiłek badawczy lub wiedzę. W każdym razie dzięki.
kriegaex
Jeśli używasz wersji gitflow-avh, spójrz niżej na stackoverflow.com/a/29353800/472611 @ tony-chemit answer
Matěj Kříž
11

Jak już wspomniano, możemy rozpocząć nową funkcję używając dowolnej gałęzi podstawowej z

git flow feature start PROJ-511 feature/PROJ-500

Aby zakończyć podfunkcję, możemy tymczasowo zmienić konfigurację git flow, aby używała naszej gałęzi funkcji zamiast develop:

git flow config set develop feature/PROJ-500 && git flow feature finish PROJ-511

W ten sposób git flow uruchamia wszystkie polecenia i testy poprawności. Wreszcie, aby przywrócić konfigurację, możemy uruchomić

git flow config set develop develop 
César
źródło
9

Aktualizacja (5 listopada 2020 r.): Jak wspomniano w nowszej odpowiedzi tutaj , jest to możliwe dzięki gitflow-avh, który zastąpił oryginalny przepływ git.

===================

Oryginalna odpowiedź:

Nie sądzę, by istniała na to metoda w git flow, ale jest to dość proste w przypadku samego git.

git checkout PROJ-500
git checkout -b PROJ-511
...do your PROJ-511 work...
git checkout PROJ-500
git merge PROJ-511
git branch -d PROJ-511
Derek S
źródło
2
Dzięki Derek za odpowiedź. Tak, mógłbym śledzić ten przepływ pracy. Ale git flow zawiera szereg poleceń i testów poprawności, których wolę używać do tworzenia podfunkcji. Na przykład tutaj jest link do git-flow-feature - github.com/nvie/gitflow/blob/develop/git-flow-feature
pymarco