A failed link call leaves the target stack's membership partially mutated
还没有人认领这个 Issue。
评估
调研方向
从 gh stack link 命令开始,按照此 issue 中的步骤重现失败,然后检查影响 repos/{owner}/{repo}/stacks/{id} 成员关系的调用。跟踪 PR 创建尝试失败时如何处理之前和之后的成员关系变更。完成标准是:失败的链接要么保留原始的 pull_requests 成员关系,要么明确报告每一项部分变更,并通过 API 进行验证。
由索引模型根据 Issue 内容生成。
描述
Summary
When gh stack link fails partway through (see #373 for one way to trigger this), the stack's membership on GitHub is left altered rather than restored — PRs that were part of the stack before the failed call are silently dropped from it, with no rollback and no mention of this in the command's error output.
Repro
- Build a stack
main <- a <- b <- c <- d <- eviagh stack link. Confirm viagh api repos/{owner}/{repo}/stacks/{id}that all 5 PRs are listed underpull_requests. - Merge
aandb. Closecwithout merging. - Run
gh stack link a b c d e --base mainto fixd's base (see #373) — it fails while trying to create a duplicate PR fora. - Re-check the stack's membership:
gh api repos/{owner}/{repo}/stacks/{id} --jq '.pull_requests[].number'.
Actual
Before step 3, the stack listed all 5 PRs. After the failed link call in step 3, the stack's pull_requests field lists only the merged PRs (a, b) — c, d, and e are gone from the stack entirely, even though d and e were never touched by the failed create attempt (only the lookup step "found" them, per #373's output).
This is also visible in the GitHub UI: PRs that previously showed a "Part of a stack" banner no longer show it at all.
I did not attempt to trigger this deliberately — it was an unwanted side effect discovered while working around #373 and #372.
Expected
Either:
- The whole
linkoperation should be atomic: a failure partway through (e.g. an individual PR-creation error) should not leave the stack's membership altered from before the call, or - If partial application is intentional/unavoidable, the command should clearly report which stack-membership changes actually took effect before it errored out, so the caller can reconcile the difference instead of discovering it later via the API or UI.
Environment
gh-stack version 0.0.8, installed via gh extension install github/gh-stack.
- 主要语言
- Go
- 星标
- 1.5k
- 派生
- 73
- 平均合并
- 1 天 8 小时
- 30 天内合并 PR
- 7
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
github/gh-stack 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 85/100
-
难度 1/5 1 小时以内 新手友好度 92/100
-
feature request topic: cli - general
难度 2/5 1-3 小时 新手友好度 68/100
-
feature request topic: auto-merge
难度 2/5 1-3 小时 新手友好度 68/100
-
bug topic: docs
难度 1/5 1 小时以内 新手友好度 68/100
相似的 Issue
-
textual definition
难度 1/5 1 小时以内 新手友好度 90/100
geneontology/go-ontology#32653 ·
-
难度 1/5 1 小时以内 新手友好度 75/100
-
needs design
难度 2/5 1-3 小时 新手友好度 75/100
-
Priority/High ready-for-agent Severity/Major Type/Bug
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 70/100