Skip to content

Limitations

git-spice's handling of GitHub Pull Requests is limited by what's possible with GitHub and its handling of Git commits. Some limitations imposed on git-spice are listed below.

Write access required

When a branch F is stacked on another branch B, and you want to create stacked Pull Requests from them, the PR for F will be created against B. To do this, git-spice needs to push both branches to the same repository.

Therefore, to use git-spice to stack PRs, you need write access to the repository: specifically the ability to push new branches.

Squash-merges restack the upstack

If a Pull Request is squash-merged into the trunk branch, all commits in that PR are replaced with a single commit with a different hash.

The branches upstack from that PR are not aware of this new commit, still referring to the old, unsquashed history of the branch. GitHub does not yet know to reconcile this new commit with the upstack branches, even though the contents are the same.

A B C D E main feat1 feat2 A B CD C D E main feat2 A B CD E main feat2  squash-merge  restack

As a result of this, when a branch is squash-merged into the trunk branch, branches upstack from it need to be restacked, and all their PRs updated.

Base branch change may dismiss approvals

Some GitHub repositories are configured to dismiss prior approvals of PRs when the base branch of that PR is changed. There is no workaround to this except to reconfigure the repository as this setting is fundamentally incompatible with a PR stacking workflow.