gh stack sync reports success after its atomic push fails
- 主要言語
- Go
- スター
- 1.5k
- フォーク
- 70
- 平均マージ
- 1日 8時間
- マージ済み PR(30日)
- 7
説明
## Reproduction
Start with an existing three-PR stack whose local branches were rebased and therefore require force pushes, then run:
```console
$ gh stack sync --remote origin
✓ Fetched latest dev from origin
✓ Trunk dev is already up to date
Pushing 3 branches to origin...
⚠ Push failed — branches may need force push after rebase
Run `gh stack push` to push with --force-with-lease.
Syncing PRs ...
✓ PR #4440 (...) — Open
✓ PR #4441 (...) — Open
✓ PR #4444 (...) — Open
⚠ Cannot create stack: Pull requests must form a stack, where each PR's base ref is the previous PR's head ref
Each PR's base branch must match the previous PR's head branch.
✓ Branches synced
Stacked on dev (a80f5ad)
$ echo $?
0
```
All three remote branch SHAs remained unchanged. The local stack was therefore not published, but `sync` continued into PR synchronization, printed a success receipt, and exited zero.
## Expected
`gh stack sync` exits nonzero immediately when its atomic branch push fails. It does not attempt PR synchronization or print `Branches synced`, because the remote stack cannot match local state until the branch refs are updated.
## Environment
- `gh-stack` v0.1.0
- `gh` 2.96.0
- git 2.50.1
- macOS arm64
## Related
#346 covers suppressed git-hook output during `gh stack push`. This report is about `sync` swallowing the failed-push status and returning a false success.
コントリビューションガイド
調査の方向性
Start at the `gh stack sync` command and trace the atomic branch push result. Verify that a failed push stops PR synchronization, avoids the `Branches synced` receipt, and returns nonzero; add or update coverage for the reproduced three-PR rebase case.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- git, github, go
- 領域
- cli
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 静か
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 70/100