abhinav / git-spice

Manage stacked Git branches
https://abhinav.github.io/git-spice/
GNU General Public License v3.0
220 stars 11 forks source link

restack: Detect merges #314

Open abhinav opened 2 months ago

abhinav commented 2 months ago

Report from a user:

Starting situation is master <= A <= B.

  1. In the Github UI, I merge in A. Locally, I git checkout master && git pull && git checkout B.
  2. While on B, I perform a gs stack restack. A and B both restack sucessfully. Looking at git checkout A && git log, I can see that the A branch points to the same commit as master.
  3. gs stack submit dies on the A push failing. I'm pretty sure I just tried to force push master.
  4. gs branch submit dies on not finding the base branch anymore.

The thing to do here is that restack operations should detect when the branch in question has been merged into its base branch. If that's the case, it should (either by default or with a prompt), delete the branch in question, and restack the upstack into the base.

Separately, RE: this line:

I'm pretty sure I just tried to force push master.

The user shared logs and fortunately that's not true. It was a push attempt to the merged branch (A), rejected because the local ref for that branch did not match the remote ref.


This should not be fixed until #331 is resolved. Fixing this would break a workaround for #331 that relies on keeping merged branches around and just not submitting them.