Fix move-branch failing when base segment has no ref name#13602
Draft
Fix move-branch failing when base segment has no ref name#13602
Conversation
Moving a branch onto another stack fails with "Graph base segment doesn't have a ref name" when the source branch's base segment in the graph is unnamed. This happens when origin/master advances past the fork point where the branches diverge — the old fork point becomes an unnamed intermediate segment in the graph, and the disconnect logic assumed every base segment would carry a ref. Remove the ref-name requirement from parent-disconnect selection. A new `select_segment` helper tries the ref name first, then falls back to the segment's tip commit. If neither exists (empty + unnamed), it bails rather than silently selecting all parents. The E2E test reproduces the scenario: two branches are applied, then origin/master is advanced and fetched so the fork point loses its ref. Moving one branch on top of the other exercises the fallback path.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moving a branch onto another stack fails with "Graph base segment
doesn't have a ref name" when the source branch's base segment in the
graph is unnamed. This happens when origin/master advances past the
fork point where the branches diverge — the old fork point becomes an
unnamed intermediate segment in the graph, and the disconnect logic
assumed every base segment would carry a ref.
Remove the ref-name requirement from parent-disconnect selection.
A new
select_segmenthelper tries the ref name first, then fallsback to the segment's tip commit. If neither exists (empty + unnamed),
it bails rather than silently selecting all parents.
The E2E test reproduces the scenario: two branches are applied, then
origin/master is advanced and fetched so the fork point loses its ref.
Moving one branch on top of the other exercises the fallback path.