Nasz zespół właśnie przeszedł z FogBugz & Kiln / Mercurial na Jira & Stash / Git. Do rozgałęziania używamy modelu Git Flow, dodając gałęzie podzadania z gałęzi elementów (odnoszące się do podzadań Jira elementów Jira). Używamy Skrytki do przypisania recenzenta, gdy tworzymy żądanie ściągnięcia, aby ponownie połączyć się z gałęzią nadrzędną (zwykle programuje, ale podzadania z powrotem do gałęzi funkcji).
Problem, który znajdujemy, polega na tym, że nawet przy najlepszym planowaniu i rozbiciu przypadków funkcji, gdy wielu programistów pracuje razem nad tą samą funkcją, powiedzmy na front-end i back-end, jeśli pracują na współzależnym kodzie, który jest w oddzielnych gałęziach jeden programista blokuje drugi.
W miarę rozwoju próbowaliśmy się przenosić między gałęziami. Próbowaliśmy także utworzyć lokalne oddziały integracji, z których każdy programista może pobrać wiele oddziałów, aby przetestować integrację podczas ich rozwoju. Wreszcie, i wydaje się, że do tej pory działało to najlepiej dla nas, chociaż przy nieco większym obciążeniu, próbowaliśmy utworzyć gałąź integracji z gałęzi funkcji od samego początku. Gdy gałąź podzadania (poza gałęzią funkcji) jest gotowa na żądanie ściągnięcia i przegląd kodu, również ręcznie scalamy te zestawy zmian w tej gałęzi integracji funkcji. Wówczas wszyscy zainteresowani programiści mogą przenieść się z tej gałęzi integracji do innych zależnych gałęzi podzadań. Zapobiega to oczekiwaniu na oddział, od którego zależy przejście przeglądu kodu.
Wiem, że niekoniecznie jest to problem z Gitem - dotyczy pracy nad współzależnym kodem w wielu gałęziach, w połączeniu z naszym własnym procesem pracy i kulturą. Gdybyśmy nie mieli ścisłych zasad sprawdzania kodu dla developerów (prawdziwa gałąź integracji), wówczas programista 1 mógłby połączyć się z programistą, aby programista 2 mógł z niego skorzystać. Inną komplikacją jest to, że musimy również przeprowadzić wstępne testy w ramach procesu przeglądu kodu przed przekazaniem funkcji do QA. Oznacza to, że nawet jeśli programista front-end 1 pobiera bezpośrednio z gałęzi programisty back-end 2, ponieważ idź, jeśli programista zaplecza 2 zakończy pracę i jego żądanie ściągnięcia siedzi przez tydzień na sprawdzaniu kodu, wówczas programista frontonu 2 technicznie nie może utworzyć swojego żądania ściągnięcia / recenzji kodu, ponieważ jego / jej recenzent kodu nie może test, ponieważ back-end developer 2 '
Najważniejsze jest to, że w tym przypadku znajdujemy się w dużo bardziej szeregowym niż równoległym podejściu, w zależności od tego, którą drogą wybieramy, i chcielibyśmy znaleźć proces, którego można by tego uniknąć.
Ostatnią rzeczą, o której wspomnę, jest to, że zdajemy sobie sprawę z dzielenia się kodem między gałęziami, które nie zostały jeszcze sprawdzone i sfinalizowane, ale w zasadzie używamy kodu beta innych. Do pewnego stopnia nie sądzę, że możemy tego uniknąć i jesteśmy skłonni zaakceptować to do pewnego stopnia.