GitHub가 스택형 풀 리퀘스트(stacked pull requests)를 퍼블릭 프리뷰로 전환했습니다. 이를 통해 개발자는 대규모 변경 사항을 의존적인 PR 체인으로 나누어 각각 독립적으로 리뷰하고 머지할 수 있습니다.

이 기능이 중요한 이유

단일한 거대 PR은 종종 한 달 넘게 이어지는 리뷰로 불어나며, 리뷰어는 관련 없는 코드까지 일일이 확인해야 하는 상황에 처하곤 합니다. 또한 베이스 브랜치가 변경되면, 이러한 대규모 변경 사항은 머지 충돌을 일으키기 쉬워 릴리스를 지연시키기도 합니다. 스택형 PR은 하나의 큰 diff를 이전 단계에 기반한 일련의 작고 집중된 diff들로 변환함으로써 이 두 가지 문제를 모두 해결합니다.

작동 방식

먼저 메인 브랜치를 대상으로 첫 번째 PR을 생성한 다음, 다음 PR은 첫 번째 PR을 베이스로, 세 번째는 두 번째를 베이스로 하는 식으로 연결합니다. GitHub는 이 관계를 자동으로 추적합니다. 만약 베이스 PR을 수정하면, 의존적인 PR들도 새로운 상태를 반영하여 업데이트됩니다. 리뷰어는 클릭 한 번으로 전체 스택을 승인하거나, 개별 레이어를 각각 승인할 수 있습니다.

  • 리뷰 범위가 좁게 유지되어 피드백이 빨라집니다.
  • 각 PR이 해당 레이어에서 도입된 코드만 다루기 때문에 충돌이 줄어듭니다.
  • UI에 스택 계층 구조가 표시되며, GitHub CLI를 사용하면 한 줄의 명령어로 일련의 스택형 PR을 생성할 수 있습니다.
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

커맨드 라인 예제는 이전 PR에 의존하는 세 개의 연결된 PR을 생성합니다. 동일한 워크플로우를 웹 인터페이스에서도 사용할 수 있으며, 다른 PR에 영향을 주지 않고 스택에서 PR의 순서를 변경하거나 제거할 수 있습니다.

혜택을 볼 수 있는 대상

대규모 기능 팀과 오픈 소스 메인테이너는 리뷰어에게 관련 없는 코드 변경을 노출하지 않고도 점진적인 작업을 배포할 수 있습니다. 릴리스 매니저는 각 스택 레이어를 개별 일정에 따라 머지할 수 있으므로, 무엇이 배포 준비가 되었는지 더 명확하게 파악할 수 있습니다.

고려해야 할 주의 사항

이 기능은 아직 프리뷰 단계이므로 정식 출시 전에 변경될 수 있습니다. 팀은 브랜칭에 관한 새로운 습관을 도입해야 할 수도 있으며, 이미 부분적으로 머지된 스택을 리베이스할 때 예외적인 상황에 직면할 수 있습니다. 문서화가 아직 진행 중이므로, 초기 사용자들은 UI 안내를 익히는 데 추가 시간을 소비할 수 있습니다.

향후 주목할 점

GitHub는 아마도 code-owners 및 자동화 도구와의 더 긴밀한 통합을 선보일 것이며, 충돌 감소에 대한 메트릭을 공개할 수도 있습니다. GA(일반 사용 가능) 시점에 대한 업데이트는 프리뷰 발표 페이지를 계속 확인하시기 바랍니다.

요약: 스택형 풀 리퀘스트는 개발자가 거대한 변경 사항을 다스릴 수 있는 실질적인 방법을 제공하며, 충돌이 잦은 단일 PR을 관리하기 쉽고 리뷰하기 좋은 일련의 과정으로 변환해 줍니다. 만약 현재 워크플로우가 긴 리뷰와 머지 문제로 어려움을 겪고 있다면, 이번 프리뷰를 직접 시도해 볼 가치가 있습니다.