Artifact 2a486e440bab138c2f630e4b3259ea400a0d23f3d3bb58aba00ec7acade8bc29:
- File
src/cmd/checkout.zig
-
2026-08-24 10:16:17
— part of check-in
[7fcc9b5ee1]
on branch update-dirty-tree-135
— update: carry uncommitted work across the move instead of refusing it
A dirty tree is now three-way merged (current check-in, working file, target) rather than rejected, so a branch tip that advanced under uncommitted work can be joined. Previously update, merge and stash all refused that state, leaving commit --allow-fork as the only exit -- the guard that keeps forks deliberate was manufacturing them. The fork guard itself is unchanged.
applyCheckinWith scans the tree once and calls back for the merge policy; handing carries in instead would scan every clean update twice, which cost a 20k-file no-op update 63%.
Paths that cannot merge either way (type change, edited here / deleted there) are named and refused before anything mutates.
Fixes #135 (user: dmestas, size: 281548) [annotate] [blame] [check-ins using]
- 2026-08-24 11:27:40 — part of check-in [5f6402dd84] on branch trunk — merge update-dirty-tree-135: carry uncommitted work across the move (#135) (user: dmestas, size: 281548) [annotate] [blame] [check-ins using]
-
2026-08-24 10:16:17
— part of check-in
[7fcc9b5ee1]
on branch update-dirty-tree-135
— update: carry uncommitted work across the move instead of refusing it