github / github/gh-stack

A stacked pull request cannot use auto-merge

Open
#504 0 comments 4 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
1.5k
Forks
70
Avg merge
1d 8h
Merged PRs (30d)
7

Description

## Summary

`gh stack link` refuses a pull request that has auto-merge enabled, so adopting a stack costs a capability that an unstacked pull request keeps. Every layer then needs a person at the keyboard at the moment the layer below lands.

## Evidence

Both pull requests approved and green. `#101` had auto-merge enabled, so linking failed:

```text
Checking existing stacks...
Looking up PRs for 2 branches...
✗ PR #101 cannot be added to a stack: it has auto-merge enabled
```

Turning auto-merge off let the link succeed.

This compounds the behaviour in #174. When the bottom layer merges, the layer above leaves the queue and GitHub rewrites its head, which restarts its required checks. Nothing puts it back. With auto-merge unavailable, only a person can, and only once the restarted checks finish. A stack of three with a 15-minute required check needs three waits and three manual enqueues to land one change.

## Expected

A stacked pull request can use auto-merge, so each layer enqueues itself once its base merges and its checks pass.

If the two genuinely cannot coexist, say so where the user meets it: `gh stack link` should explain why auto-merge and stacks are exclusive, and the stack panel should say that each layer needs a manual enqueue.

## Actual

`gh stack link` rejects the pull request with no explanation of the conflict, and offers no alternative.

## Environment

- `gh` 2.100.0, `gh stack` v0.0.8
- Trunk protected by a merge queue, `merge_method: REBASE`
- Two-layer stack, both pull requests approved with required checks passing

## Reproduction

1. Open two pull requests that stack on each other, both approved and green.
2. Enable auto-merge on the bottom one.
3. Run `gh stack link `.

## Note on scope

This reports only what was observed: `gh stack link` rejects a pull request that already has auto-merge enabled. The reverse direction, enabling auto-merge on a pull request that is already stacked, was not tested, because the repository in question has `allow_auto_merge: false` set at the repository level for unrelated reasons.

## Related

- #174 — the layer above leaves the queue and is not put back, which is what makes the missing auto-merge costly
- #172 — "'Merge stack' appears to enqueue only the bottom PR"
- #502 — the merge queue rewrites a commit that needed no rewrite, which is what restarts the checks
- #503 — the panel gives no sign that a manual enqueue is needed

Contributor guide

Open the contributing guide

Research direction

Start with the `gh stack link` command and reproduce the rejection using the two-layer scenario in the issue. Read the handling of auto-merge and stack linking alongside related issues #174, #172, #502, and #503. Done means stacked pull requests can retain auto-merge, or the command and stack panel clearly explain the incompatibility and manual enqueue requirement.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, go
Domain
cli, devops
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.