Stack should be merged when merge commit is already pushed
- Dominant language
- Go
- Stars
- 1.5k
- Forks
- 70
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 7
Description
## Reproduce step
Let's say you have this stacked PRs.
```
main <- PR#1 <- PR#2 <- PR#3
```
Now, you manually create merge commit and push it to the `main`.
```
prv_main <- PR#1 <- PR#2 <- PR#3
\---------------------+-------new_main
```
## Current Behavior
- `PR#1` is closed, because it's base is `main`, and GitHub automatically closes already merged PRs.
- `PR#2` and `PR#3` are **NOT closed**, because their bases aren't `main` (they point to previous PR's tip), so they still have diff remaining, and PR isn't closed.
## Expected Behavior
- All PRs should be closed.
## How to fix this
Stacked PR should check it's mergeability against the whole stack's base (e.g. `main` in this case).
Basically the whole point of stacked PR is that "your PR is pointing to another PR, but they are treated as pointing to base".
## Why this should be fixed
1. These PRs are shown as "open PRs" while they are already merged.
2. This will help 3rd-party integrations -- e.g. [bors](https://bors.tech/index.html) manually creates octopus merge commit of PRs and push it to main.
I know that you can manually `gh stack sync`, but I think this should be done automatically.
Contributor guide
Research direction
Trace the existing `gh stack sync` entry point and the logic that determines whether stacked PRs are merged. Compare its base handling with the manually pushed merge-commit scenario described here. Done means all PRs in the stack are recognized as merged and closed when the stack's base contains their changes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, github, go
- Domain
- cli, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100