Stacked pull requests が 10月から github.com の全プランで使える。大きな変更を依存順の短い PR 層に分け、各層を独立してレビューしたうえで、下位層ごと、またはスタック全体を一括マージできる。GitHub Enterprise Server は今後のリリースに同梱される。

7月のパブリックプレビュー以降、スタックを使うリポジトリは同規模比でマージ量が 9% 増え、上位 1% のリポジトリの 3 分の 2 超が採用して time-to-merge が 5% 改善した。

マージと rebase:

  • 未変更コードの Rebase stack では、stale approval を却下する設定でも承認が残る
  • Rebase stack と部分マージ後の自動 rebase は、ブランチルールが署名を要求するか元コミットが署名済みなら、置換コミットを署名する
  • リポジトリルールの bypass 権限は、スタック最下位の未マージ PR に使える
  • merge queue にはスタック全体が 1 つの merge group として入り、merge commit 方式では PR ごとに 1 つの merge commit を作る
  • スタックの base ブランチ削除時は最下位 PR を閉じず、自動で retarget する
  • スタックの auto-merge は数週間かけて展開。条件を満たした PR 群をまとめてマージできる

ナビと自動化:

  • PR ページの固定ヘッダと一覧にスタック情報を常時表示
  • Shift+J / Shift+K でスタック内を移動
  • スタックへの追加・削除がタイムラインに残る。pull_request webhook に stacked アクションが付く
  • gh stack 拡張が Git worktrees に対応し、init / checkout / ナビを改善

同一リポジトリ内のブランチのみ対象。クロスフォークと GitHub Desktop は非対応。API 経由のマージは非同期の merge API が必要。

#参考文献