feat: TRAC-925 upgrade: whole-tree merge engine and index staging - #3064
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Bundle Size ReportComparing against baseline from No bundle size changes detected. |
9c3e3f8 to
9ba2d0f
Compare
8130e49 to
1c9aa30
Compare
9ba2d0f to
f182ca3
Compare
1c9aa30 to
cceeb22
Compare
f182ca3 to
9e76666
Compare
cceeb22 to
da9ca32
Compare
9e76666 to
5048bea
Compare
e5aa299 to
85368ef
Compare
Unlighthouse Performance Comparison — VercelComparing PR preview deployment Unlighthouse scores vs production Unlighthouse scores. Summary ScoreAggregate score across all categories as reported by Unlighthouse.
Category Scores
Core Web Vitals
|
5048bea to
da25f95
Compare
85368ef to
39f5903
Compare
39f5903 to
1ed7139
Compare
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…ngine tests Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
1ed7139 to
127c5ac
Compare
Jira: TRAC-925
PR 2 of 4 for
catalyst upgrade(LTRAC-956). Stacks on TRAC-924 (#3063).What/Why?
Adds the whole-tree merge engine (
git merge-tree --write-tree) and the index staging layer (applyIndexState).The whole-tree engine is the default (used when git >= 2.38). Key design decisions:
GIT_INDEX_FILEper side — this lets all threegit add -Acalls run in parallel without index races, while still sharing the object store for blob dedupgit merge-tree -z --name-onlyoutput is NUL-delimited:<tree-oid>\0<conflicted-path>\0...\0\0<messages>. The empty field after the last conflicted path is the terminator; everything after is informational and ignoredcheckout-indexonly writes, never removes — deleted paths are identified viagit diff --no-renames --name-status oursTree mergedTreeand removed separatelyNULL_OIDis detected viagit rev-parse --show-object-formatto support SHA-256 repos (OID = 64 hex vs 40). TheOIDregex already accepts 40–64; NULL_OID now matchesapplyIndexStateregisters conflicted files as real unmerged index entries (stages 1/2/3) so VS Code's merge UI activates.MERGE_HEADis intentionally absent — resolving is a normalgit add+ commit, not a merge commit.Testing
pnpm test upgrade.specCovers:
resolveStrategy,applyIndexState,mergeCore engine: tree× 7 (same contract as per-file — both must agree),mergeCoreTree rename fidelity.Migration
No user-visible changes yet.