merge: Use native ranges when available - #1401
Draft
abhinav wants to merge 1 commit into
Draft
Conversation
Owner
Author
|
This change is part of the following stack:
Change managed by git-spice. |
This was referenced Aug 10, 2026
abhinav
force-pushed
the
merge-native-ranges
branch
from
August 12, 2026 02:43
6ca6972 to
a66beb4
Compare
abhinav
force-pushed
the
merge-native-ranges
branch
from
August 12, 2026 03:06
a66beb4 to
7450d6c
Compare
abhinav
force-pushed
the
merge-native-ranges
branch
from
August 12, 2026 04:19
7450d6c to
ef4e2d8
Compare
abhinav
force-pushed
the
merge-native-ranges
branch
from
August 12, 2026 04:30
ef4e2d8 to
37865e2
Compare
abhinav
force-pushed
the
merge-native-ranges
branch
from
August 12, 2026 13:59
37865e2 to
bfd8b41
Compare
abhinav
force-pushed
the
merge-native-ranges
branch
from
August 15, 2026 13:56
bfd8b41 to
0f8d665
Compare
This was referenced Aug 15, 2026
abhinav
force-pushed
the
merge-native-ranges
branch
from
August 23, 2026 13:41
0f8d665 to
4a0e018
Compare
abhinav
force-pushed
the
merge-native-ranges
branch
from
August 24, 2026 04:08
4a0e018 to
290f9a9
Compare
A provider-native atomic range may differ from the linear paths inferred from the selected local branch forest. Build the complete desired stack state and ask `WithStacks` to plan merge ranges from provider membership instead. Overlay executable native plans onto the ordinary merge queue. Changes omitted from every plan retain individual bottom-up merging, and `ErrUnsupported` selects that ordinary path before execution begins. Divergent heads remain separate queue dependencies, so one native path can merge without consuming an unplanned sibling. Prepare every selected change and verify its published base, head, and commit before scheduling the operation. Use the existing timeout and completion polling for asynchronous acceptance rather than introducing another polling layer. Custom merge commands continue to use per-change execution. A GitHub-only integration scenario atomically merges A-B-C and verifies that divergent D remains open and mergeable on B with its head unchanged.
abhinav
force-pushed
the
merge-native-ranges
branch
from
August 24, 2026 12:41
290f9a9 to
57f8243
Compare
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.
Merge selected linear paths atomically when a repository implements
WithMergeRange. Prepare each change and verify its published base,head, and commit before scheduling the operation, then use the existing
timeout for asynchronous acceptance and final change-state polling.
Treat runtime
ErrUnsupportedas a signal to resume the ordinarybottom-up merge sequence. Divergent heads remain separate queue
dependencies, so one native linear path can merge without consuming an
unselected sibling.
ShamHub constructs merge and squash range results before one
compare-and-swap target update. Propagate request cancellation through
validation, commit construction, and publication so a canceled operation
cannot advance the target or mark changes merged.
A GitHub-only integration scenario registers A-B-C as a native stack,
merges it atomically, and verifies that divergent D remains open,
unstacked, and mergeable on B with its head branch and commit unchanged.
Its cassette remains deliberately unrecorded for a human operator to
capture.