スタック型PRはGitHub.comのリポジトリでのみサポートされています。GitHub
Enterprise Server、GitLab、その他のプロバイダーには、スタック型PR用のAPIがありません。
スタックの仕組み
- PRは下から上に順番に積み重なります。最下位のPRはトランクブランチ (例:
main) を対象とし、それ以外のPRのベースブランチは、その直下のPRのヘッドブランチになります。 - 各PRは直下のレイヤーとの差分として表示されるため、そのPR固有の変更のみが表示され、上下のレイヤーの変更が混ざることはありません。
- スタックは下から上へマージされます。スタック内のPRをマージすると、その下にあるすべてのオープンなPRも、1回の操作でアトミックにマージされます。下位のPRがマージされると、GitHubは残りのPRのベースブランチを自動的にトランクブランチに変更します。
Devin がスタックを作成する場合
- スタックを告知します。PR を作成する前にスタック名を示すため、セッション内で一連の PR が形作られていく様子を確認できます。
- 各 PR を作成します。それぞれ独自の説明と CI を備えた、通常どおり焦点を絞った PR として作成します。各 PR の対象ブランチは、その下にある PR のヘッドブランチです。
- PR をスタックとしてグループ化します。PR の作成後、GitHub 上でグループ化します。
スタックの整合性を保つ
- 競合の解決 — いずれかのレイヤーで、その下のブランチとのマージ競合が発生した場合 (たとえば、下位レイヤーにレビューのフィードバックが反映された後や、スタックの下でトランクブランチが更新された場合) 、Devinに自動的に通知され、競合をバックグラウンドで解決します。判断に影響し、入力が必要な競合の場合にのみ、確認を求めます。
- スタック全体のCI — Devinは各レイヤーのCIを監視し、失敗が発生すると修正します。PRを1件ずつ管理するのではなく、シリーズ全体の準備状況を追跡します。
- 自動リターゲティング — スタックの最下層がマージされると、GitHubは残りのPRのターゲットをトランクブランチに変更します。手動でrebaseを管理する必要はありません。
スタックの操作
- 大規模な変更をスタックに分割するよう Devin に依頼することも、作業を単一の PR として維持するよう依頼することもできます。
- 既存のスタックの先頭にフォローアップ PR を追加するよう Devin に依頼できます。
- スタックのステータスを確認するよう Devin に依頼できます。各レイヤーの状態、CI、レビュー結果、マージ可能性が報告されます。
- Devin に unstack を依頼できます。スタックは解除され、未マージの PR は再び独立した PR になります。ブランチはそのまま保持され、すでにマージされたレイヤーはマージ済みのままです。
スタックのレビューとマージ
制限事項
- GitHub.com のみ — スタックは GitHub Enterprise Server、GitLab、Bitbucket、Azure DevOps では利用できません。
- スタックのサイズ — スタックには 2~100 件の PR を含めることができます。
- マージ — スタック型PR は GitHub の通常のマージフローではマージできません。スタックマージでは、選択した PR とその下にあるすべてのオープンな PR がまとめてマージされます。

