Repository navigation
Reconcile exact tree versions against their common ancestor - #23
Merged
Merged
Conversation
ctoth
marked this pull request as ready for review
October 20, 2026 21:48
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.
Propstore's ordinary-family merge currently compares only the two parent trees: a deleted stance returns from an unchanged peer, and a one-sided edit is rejected. Add the generic storage operation needed to compare exact base/left/right path versions before application-owned family transport.
iter_merged_tree_entriespropagates one-sided additions, modifications and deletions, converges equal current object IDs, and raisesTreeMergeConflictwith exact path/base/parent witnesses for incompatible changes. It enumerates lazily and leaves final path/tree admission with the existing publisher. The implementation has no family or application semantics.The archive-relative classification follows Khanna, Kunal and Pierce, A Formal Investigation of Diff3, pp.3,5, specialized to exact keyed Git paths. Equal object convergence is the requested storage equality contract; this does not implement Diff3's textual list alignment.
Validation: the new focused file passes26 cases covering symmetric path states, lazy conflicts, real Git history/object witnesses, write-free conflict refusal, and existing tree-prefix admission. The coupled Propstore regression reproduces18 failures before the repair and passes28 cases after path selection plus contributing-occurrence transport.
Supports propstore/propstore#174 and propstore/propstore#303. This draft is one bounded slice; the existing merge requirements remain tracked there.