feat: implement muse mv — tracked file move with atomic staging
Moves SOURCE to DEST on disk and stages the rename: source gets a 'D' tombstone, destination gets an 'A' entry with the same object_id (no re-hash needed). Staged-only files (never committed) skip the tombstone and just relocate their stage entry. Handles move-into-directory, --force, --dry-run, --json. 29 TDD tests: unit helpers, integration, security (path traversal rejected), stress (200-file repo).
sha256:48c1970ec4e6fd39d6f7bb20570c2d06aadcd4f04a2fc3b1236a5aa1424a6927
sha
+85
~108
symbols
sha256:98c05dfa21a8b0f668674e85e7bdc939da261bddf7f73049135f3478542d472d
snapshot
+85
symbols added
~108
symbols modified
0
dead code introduced
Semantic Changes
193 symbols
+
test_get_source_object_id_from_head
function
function test_get_source_object_id_from_head L133–141
+
test_get_source_object_id_prefers_stage
function
function test_get_source_object_id_prefers_stage L144–153
+
test_mv_dest_already_tracked_exits_nonzero
function
function test_mv_dest_already_tracked_exits_nonzero L300–305
+
test_mv_dest_exists_on_disk_exits_nonzero
function
function test_mv_dest_exists_on_disk_exits_nonzero L308–314
+
test_mv_dest_path_traversal_rejected
function
function test_mv_dest_path_traversal_rejected L437–442
+
test_mv_force_allows_untracked_dest_on_disk
function
function test_mv_force_allows_untracked_dest_on_disk L333–341
+
test_mv_into_directory_preserves_object_id
function
function test_mv_into_directory_preserves_object_id L364–372
+
test_mv_outside_repo_source_rejected
function
function test_mv_outside_repo_source_rejected L445–452
+
test_mv_source_not_on_disk_exits_nonzero
function
function test_mv_source_not_on_disk_exits_nonzero L290–297
+
test_mv_source_not_tracked_exits_nonzero
function
function test_mv_source_not_tracked_exits_nonzero L281–287
+
test_mv_source_path_traversal_rejected
function
function test_mv_source_path_traversal_rejected L429–434
+
test_mv_staged_only_source_updates_stage
function
function test_mv_staged_only_source_updates_stage L380–401
+
test_resolve_path_rejects_traversal
function
function test_resolve_path_rejects_traversal L124–130
+
test_resolve_source_returns_relative_posix
function
function test_resolve_source_returns_relative_posix L116–121
~
age_cmd
~
annotate
~
archive
~
auth
~
bisect
~
blame
~
branch
~
breakage
~
bundle
~
cat
~
check
~
checkout
~
clean
~
clone
~
clones
~
codemap
~
commit
~
compare
~
contract
~
coord_gc
~
coupling
~
coverage
~
dag_cmd
~
dead
~
deps
~
describe
~
diff
~
docs_cmd
~
domains
~
entangle
~
fetch
~
forecast
~
gc
~
gravity
~
grep
~
harmony
~
hotspots
~
hub
~
impact
~
init
~
intent
~
lineage
~
log
~
merge
~
migrate
~
patch
~
predict
~
pull
~
push
~
query
~
rebase
~
reflog
~
remote
~
rename
~
rerere
~
reserve
~
reset
~
revert
~
rm
~
shard
~
shortlog
~
show
~
stable
~
stash
~
status
~
symbols
~
tag
~
test_cmd
~
trust
~
type_cmd
~
velocity
~
verify
~
worktree
~
main
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:48c1970ec4e6fd39d6f7bb20570c2d06aadcd4f04a2fc3b1236a5aa1424a6927 --body "your comment"
No comments yet. Be the first to start the discussion.