You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(ci): pre-fetch common-ancestor objects for config sync in 'ci pr' (#10464)
`bit ci pr --keep-lane` kept logging `... was not found on the
filesystem` / `skipping config sync from main` for every component, even
after #10460.
#10460 pre-fetched main's **head** Version object before
`syncConfigFromMain`'s 3-way config merge. But that merge loads
**three** Version objects per component: the lane head, main's head, and
their **common ancestor** (the lane's fork point). On a fresh CI runner
the fork-point object is never fetched — switching to the lane brings
the parent *graph* (version-history), not each ancestor's full Version —
so `loadVersion(baseSnap)` throws `VersionNotFoundOnFS`, the
per-component catch swallows it, and the merge silently no-ops for every
diverged component (which is all of them on a reused lane once main has
advanced).
Confirmed from a failing run: every reported hash is the fork-point tag
(e.g. `1.0.1038`), not the current main head (`1.0.1041`) — main's head
loaded fine, the base is what was missing.
**Fix:** after the existing head pre-fetch, resolve each component's
diverge state (the graph is already local) and batch-fetch the
common-ancestor base objects too, before the merge loop. Same
best-effort contract as the head pre-fetch; the base is always an
ancestor of main's head, so it's always fetchable.
Adds an e2e regression that reproduces the fresh-runner state by
dropping the fork-point object before the second `ci pr` and asserts
config sync still lands.
0 commit comments