Artifact 97f3b256a76c4e2a5fdd227bdf26701d5cbefc5296c827ee3a3a26d285fc6552:
- File
internal/checkout/update.go
-
2026-10-19 15:55:02
— part of check-in
[c88a801cf9]
on branch feat/submanifest-reader
— fix(checkout): follow renames between versions in Update, as fossil does
Update matched files by name, so a local edit to a file the target renamed was left behind as an untracked file under the old name while the new name got the target's content.
path.NameChanges ports fossil's find_filename_changes with revOK: the renames along the primary path from the checkout's version up to the common ancestor and down to the target, a rename on the way up taken backwards. Update uses it as update.c does: a changed file the target renamed is matched to the target's file under its new name. A merge is written under the new name and the old name removed; when the target only renamed the file, nothing is written and the edit stays under the old name, untracked, as in fossil, which Unmerged now reports. A local rename is not followed, as in fossil.
fossil 2.28 interop tests compare both directions: a target-side rename and edit, a target-side pure rename, a local rename of a file the target edited, and a rename on the checkout's own branch followed backwards to a sibling.
Tracked in #445 (user: [email protected], size: 25627) [annotate] [blame] [check-ins using]
-
2026-10-19 15:59:12
— part of check-in
[5d0a52d706]
on branch feat/submanifest-reader
— Merge branch 'fix/update-renames' into feat/submanifest-reader
# Conflicts: # CHANGELOG.md (user: [email protected], size: 25627) [annotate] [blame] [check-ins using]
-
2026-10-19 15:55:02
— part of check-in
[c88a801cf9]
on branch feat/submanifest-reader
— fix(checkout): follow renames between versions in Update, as fossil does