Obecnie pracuję nad projektem z zespołem korzystającym z przepływu pracy git. Jest to dość proste, master powinien być w stanie do wdrożenia, a do tworzenia funkcji i poprawek służą gałęzie. Ilekroć mamy ukończoną i przetestowaną funkcję lub poprawkę błędu, przenosimy ją do opanowania tak szybko, jak to możliwe. Chodzi o to, aby gałęzie były jak najmniejsze, aby ułatwić ich scalenie z powrotem w master. Mamy zasadę, że każdy kod przekazywany do gałęzi master powinien być w stanie do wdrożenia i przejść testy.
Mamy sytuację, w której jeden z programistów wykonał wiele pracy (kilka miesięcy) w jednym oddziale i gałąź ta nie została jeszcze z powrotem połączona z głównym. Jest teraz kilka osobnych funkcji i kilka zatwierdzeń w tej gałęzi, w zasadzie ta gałąź naprawdę powinna była zostać scalona już kilka razy, ale jak dotąd nie było. Większość kodu jest w dobrym stanie z testami jednostkowymi, które można połączyć z powrotem w master, ale najnowsze zmiany z pewnością nie powinny być, ponieważ nie zostały zakończone i nie zostały przetestowane.
Jaki jest najlepszy sposób radzenia sobie z sytuacją, w której jedna gałąź jest naprawdę daleko od innych? W jaki sposób możemy uniknąć, aby oddziały otrzymywały w przyszłości bardzo dużą liczbę zatwierdzeń od mistrza?