GitHub udostępnił funkcję stacked pull requestów w ramach publicznego preview, pozwalając programistom dzielić duże zmiany na łańcuch zależnych od siebie PR-ów, które można przeglądać i scalać niezależnie.

Dlaczego ta funkcja jest ważna

Pojedynczy, monolityczny PR często rozrasta się do rozmiarów wymagających miesięcznego przeglądu, zmuszając recenzentów do przedzierania się przez niepowiązany kod. Gdy gałąź bazowa (base branch) ulega zmianie, te ogromne zmiany są podatne na konflikty scalania, co wstrzymuje wydania. Stacked PR-y rozwiązują oba te problemy, zamieniając jeden duży diff na serię mniejszych, skoncentrowanych diffów, z których każdy opiera się na poprzednim.

Jak to działa

Utwórz pierwszy PR do gałęzi main, a następnie oprzyj kolejny PR na pierwszym, trzeci na drugim i tak dalej. GitHub automatycznie śledzi te zależności: jeśli wprowadzisz poprawki w bazowym PR, zależne PR-y zostaną zaktualizowane, aby odzwierciedlić nowy stan. Recenzenci mogą zatwierdzić cały stos jednym kliknięciem lub zaakceptować poszczególne warstwy.

  • Przeglądy (reviews) dotyczą wąskiego zakresu, co przyspiesza otrzymywanie informacji zwrotnej.
  • Liczba konfliktów spada, ponieważ każdy PR dotyczy tylko kodu wprowadzonego w jego własnej warstwie.
  • Interfejs użytkownika (UI) pokazuje hierarchię stosu, a GitHub CLI oferuje jednolinijkową komendę do tworzenia serii stacked PR-ów.
gh pr create --title Feature A --base main
gh pr create --title Feature B --base feature-a
gh pr create --title Feature C --base feature-b

Przykład z linii komend tworzy trzy powiązane PR-y, z których każdy zależy od poprzedniego. Ten sam przepływ pracy jest dostępny poprzez interfejs webowy, w którym można zmienić kolejność lub usunąć PR ze stosu bez przerywania działania pozostałych.

Kto na tym zyska

Duże zespoły produktowe oraz opiekunowie projektów open-source mogą dostarczać przyrostowe prace, nie narażając recenzentów na niepowiązany szum zmian. Menedżerowie wydań otrzymują wyraźniejszy obraz tego, co jest gotowe do wysłania, ponieważ każdą warstwę stosu można scalać zgodnie z własnym harmonogramem.

Uwagi, które należy wziąć pod uwagę

Funkcja jest wciąż w fazie preview, więc może ulec zmianie przed pełnym wydaniem. Zespoły będą musiały wypracować nowe nawyki dotyczące tworzenia gałęzi i mogą napotkać przypadki brzegowe podczas rebase'owania stosu, który został już częściowo scalony. Dokumentacja wciąż powstaje, więc wcześni użytkownicy mogą poświęcić dodatkowy czas na naukę wskazówek w interfejsie UI.

Co dalej

GitHub prawdopodobnie wprowadzi ściślejszą integrację z code-owners oraz narzędziami do automatyzacji i może udostępnić metryki dotyczące redukcji konfliktów. Warto śledzić stronę ogłoszenia o preview, aby uzyskać informacje o terminie ogólnej dostępności (GA).

Podsumowanie: Stacked pull requesty dają programistom praktyczny sposób na okiełznanie ogromnych zmian, zamieniając pojedynczy, obciążony konfliktami PR w zarządzalny, przyjazny dla recenzentów ciąg. Jeśli Twój przepływ pracy zmaga się z długimi przeglądami i problemami ze scalaniem, wersja preview jest warta przetestowania.