github / github/gh-stack

A conflict low in a stack blocks merging PRs above it, even when they merge cleanly

オープン
#449 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。