A conflict low in a stack blocks merging PRs above it, even when they merge cleanly
- 主要言語
- Go
- スター
- 1.5k
- フォーク
- 70
- 平均マージ
- 1日 8時間
- マージ済み PR(30日)
- 7
説明
**The problem**
Say `main ← PR1 ← PR2`. PR1 has merge conflicts against `main` and can't be merged. PR2 against PR1 is completely fine — no conflicts at all.
Merging is all-or-nothing for the whole chain up to `main`: if any PR in the stack can't be merged, none of them are. So even though PR2's changes are ready and conflict-free relative to PR1, there's no way to merge it — it's stuck behind PR1's unrelated conflict with `main`.
**Impact**
A single conflict low in a stack blocks everything built on top of it, even work that's fully ready and has nothing to do with that conflict. Teams end up stuck waiting on someone to resolve the bottom PR's conflict before any of the PRs above it can move forward, with no way to make progress on the parts that are actually ready.
This also blocks deploying feature branches to a staging environment for testing — a common practice at many companies. In this scenario, the feature branch is PR1's branch (the one with the conflict against `main`): deploying it to staging means merging it, and that merge is exactly what's blocked, so the branch can't be deployed until the unrelated conflict is resolved.
コントリビューションガイド
調査の方向性
まず、gh-stack がスタックされたプルリクエストをマージできるかどうかをどのように判定し、staging デプロイを目的としたブランチをどのように扱っているかを追跡します。競合しているプルリクエストの上位にある競合のないプルリクエストについて、望ましい動作を定義します。これには、そのマージ可能性とデプロイパスをどのように表現するかも含まれます。競合しているプルリクエストより上位のプルリクエストが、依存関係を誤って回避することなく独立して進行できれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- github, go
- 領域
- cli
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100