github / github/gh-stack

Stacking should handle rebases performed outside of gh stack

Open
#193 3 comments 6 reactions 0 assignees View on GitHub
feature request topic: cli - general
Dominant language
Go
Stars
1.5k
Forks
70
Avg merge
1d 8h
Merged PRs (30d)
7

Description

Let's say I have

```
trunk: AA1
branch1: BB1
branch2: CC1
```

The stack JSON will look something like this

```
{
"schemaVersion": 1,
"stacks": [{
"trunk": {
"branch": "master",
"head": "AA1"
},
"branches": [{
"branch": "branch1",
"head": "BB1",
"base": "AA1",
"pullRequest": {
// ...
}
}, {
"branch": "branch2",
"head": "CC1",
"base": "BB1",
"pullRequest": {
// ..
}
}
]
}
]
}
```

If I now perform an interactive rebase (**outside of gh stack**) - e.g. to _remove_ the head commit from branch1, or if I do something like `git reset HEAD^1 --hard` **from a branch1 checkout**, the stack has no knowledge of what has happened.

If I view the stack, there's now one fewer commit on branch1 (as expected) **but one extra commit on branch2**. I'd like / expect that commit to have been removed entirely from the stack.

Contributor guide

Open the contributing guide

Research direction

Reproduce the stack with trunk, branch1, and branch2, then rebase or run `git reset HEAD^1 --hard` from the branch1 checkout and inspect the resulting stack view and JSON. Trace how gh stack detects branch bases and commit changes; done means commits removed from an upstream branch are not retained as extra commits in descendant branches.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, go
Domain
cli, developer-experience
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.