gh stack rebase replays the same child commit twice on v0.1.1
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 52/100
Piste de recherche
Commencez par la commande gh stack rebase et reproduisez sous Windows ou PowerShell la stack à trois couches décrite dans l’issue. Inspectez l’état du rebase en cascade pour stack3/02-service, notamment .git/rebase-merge/done et git rebase --edit-todo. C’est terminé lorsque la plage de commits propre à chaque couche est rejouée exactement une fois et que la couche API est rebasée avec succès sur la couche service mise à jour.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
gh stack rebase appears to replay the same child commit twice when a lower
branch in a stack receives a new commit.
This reproduces consistently for me with gh stack v0.1.1 on a freshly
created stack.
This looks similar to #250, but I am reproducing it on v0.1.1, which includes
the fix for amended parent commits being replayed into child branches.
Environment
- OS: Windows
- Shell: PowerShell
gh stack version: 0.1.1- Stack trunk:
main
Stack
I created a simple three-layer stack:
main
└─ stack3/01-model
└─ stack3/02-service
└─ stack3/03-api
Each layer initially has one commit:
stack3/01-model: Add Product modelstack3/02-service: Add Product Servicestack3/03-api: Add Product API
I then added another commit to the bottom layer (stack3/01-model).
Conceptually:
main
└─ Add Product model
└─ Add price to Product model
└─ [Product Service should be rebased here]
└─ [Product API should be rebased here]
Reproduction
After adding the new commit to stack3/01-model, I ran:
gh stack rebase
Output:
Fetched latest main from origin
Trunk main is already up to date
Stack detected: (main) <- stack3/01-model <- stack3/02-service <- stack3/03-api
Rebasing branches in order, starting from stack3/01-model to stack3/03-api
Rebased stack3/01-model onto main
The command then stops while rebasing stack3/02-service.
From another terminal:
git status
reports:
interactive rebase in progress; onto 9c2c2c2
Last command done (1 command done):
pick 96bd07c # Add Product Service
Next command to do (1 remaining command):
pick 96bd07c # Add Product Service
You are currently rebasing branch 'stack3/02-service' on '9c2c2c2'.
(all conflicts fixed: run "git rebase --continue")
Changes to be committed:
new file: src/product-service.js
I inspected the rebase state.
git rebase --edit-todo contains:
pick 96bd07c # Add Product Service
And:
Get-Content .git\rebase-merge\done
contains:
pick 96bd07c... # Add Product Service
Therefore the same commit (96bd07c) appears to have already been processed
and is also still present as the next commit in the rebase todo.
Actual behavior
The cascade rebase gets stuck while rebasing the second layer.
The same Add Product Service commit appears as both:
- the last completed rebase command, and
- the next remaining rebase command.
src/product-service.js is already staged from the first application.
Expected behavior
Each layer's own commit range should be replayed exactly once onto the newly
rebased parent.
Conceptually, after changing the bottom layer:
main
└─ model
└─ model-update
└─ service'
└─ api'
The service commit should be replayed once onto the new 01-model head, and
the API commit should then be replayed once onto the new 02-service head.
Additional notes
I previously encountered a similar failure with another stack. To rule out
corrupted state from that experiment, I created stack3 from scratch and
reproduced the problem again.
I also confirmed that the installed extension is current:
gh stack -v
gh stack version 0.1.1
gh extension upgrade github/gh-stack
[stack]: already up to date
This looks related to #250, but that issue reproduced on v0.0.8 and the
release notes indicate that amended-parent replay behavior has since been
fixed.
Happy to provide the repository or additional .git/gh-stack / rebase
metadata if useful.
- Langage dominant
- Go
- Étoiles
- 1.5k
- Forks
- 73
- Merge moyen
- 1 j 8 h
- PR mergées (30 j)
- 7
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de github/gh-stack
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
-
feature request topic: cli - general
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
feature request topic: auto-merge
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
bug topic: docs
Difficulté 1/5 Moins d'une heure Accessibilité débutants 68/100
Toutes les issues de github/gh-stack
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
bug group: validation priority: low
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
codecheckers/chekhov#51 ·
-
Creating worktree from an existing remote branch with a slash in it, has unexpected behaviour Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100