Blog / Prosty model branchowania

Prosty model branchowania

2026-09-22

Można odnieść wrażenie, że współczesne modele branchowania i zasady z nimi związane urosły do ogromnych rozmiarów, często stając się większym problemem niż rozwiązaniem. Poniżej opisujemy, jak uprościliśmy ten proces w NetSparku.

Master

Zawsze utrzymujemy gałąź master (lub main) w stabilnym stanie. To właśnie z niej publikowane są wszystkie oficjalne wersje systemu.

Dev

Na co dzień rozwój nowych funkcjonalności odbywa się na gałęzi dev. Każde zadanie realizowane jest na osobnej gałęzi utworzonej z dev, a następnie wraca do niej za pomocą Pull Requesta po zakończeniu implementacji i przejściu code review.

W trakcie prac regularnie publikujemy wersje testowe oznaczone jako Release Candidate, na przykład:

2.1.0-rc.1

Pozwala to testerom oraz klientom zweryfikować nowe funkcjonalności jeszcze przed oficjalnym wydaniem.

Pod koniec każdego cyklu wydawniczego, gdy dev przejdzie wszystkie testy i osiągnie wymagany poziom stabilności, jest mergowany do mastera, co automatycznie skutkuje wydaniem nowej wersji.

Każde wydanie planujemy z wyprzedzeniem, dzięki czemu od początku wiemy, jakie funkcjonalności powinny znaleźć się w najbliższej wersji.

Naprawianie błędów

Jeżeli podczas prac nad kolejną wersją pojawi się krytyczny błąd w aktualnie opublikowanym wydaniu, tworzymy gałąź hotfix bezpośrednio z mastera.

Po przygotowaniu poprawka trafia jednocześnie do:

  • mastera, gdzie publikowana jest nowa wersja poprawkowa,
  • deva, aby znalazła się również w kolejnym wydaniu.

Jeżeli błąd nie jest krytyczny i może poczekać do następnej wersji, naprawiamy go wyłącznie na gałęzi dev.

Po opublikowaniu poprawki zwiększamy numer wersji na ostatniej pozycji, np. 2.0.1 → 2.0.2.

Strategia mergowania

Dla aktywnie rozwijanej gałęzi dev stosujemy strategię Squash Merge.

Dzięki temu historia zmian pozostaje czytelna. Programiści często podczas code review wykonują wiele drobnych commitów z podobnymi komunikatami. Pozostawienie ich wszystkich sprawia, że historia bardzo szybko staje się nieczytelna. Zamiast tego cały Pull Request trafia do dev jako jeden logiczny commit z jasnym opisem wykonanej pracy.

Natomiast podczas wydawania nowej wersji i mergowania dev do mastera korzystamy z klasycznego Merge Commit. Dzięki temu zachowujemy informację o zakończonym cyklu wydawniczym oraz możemy w prosty sposób prześledzić historię kolejnych wydań.

Tagowanie wydań

Każde oficjalne wydanie publikowane z gałęzi master otrzymuje tag odpowiadający numerowi wersji.

Dzięki temu w dowolnym momencie możemy wrócić do konkretnego wydania, odtworzyć jego stan lub przygotować poprawkę dla starszej wersji bez wpływu na bieżący rozwój systemu. Jest to szczególnie przydatne w sytuacji, gdy klient korzysta jeszcze z wcześniejszego wydania i wymaga usunięcia krytycznego błędu bez konieczności aktualizacji do najnowszej wersji.

Im prostszy proces, tym mniej czasu zespół poświęca na zarządzanie gałęziami, a więcej na rozwój produktu.