Skip to content

gh stack sync reports success after its atomic push fails #417

Description

@windsornguyen

Reproduction

Start with an existing three-PR stack whose local branches were rebased and therefore require force pushes, then run:

$ 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions