|
|
# rename a single file
|
|
|
A d2/c
|
|
|
d1/d11/a1
|
|
|
R d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# rename --after a single file
|
|
|
A d2/c
|
|
|
d1/d11/a1
|
|
|
R d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# rename --after a single file when src and tgt already tracked
|
|
|
removing d1/d11/a1
|
|
|
adding d2/c
|
|
|
A d2/c
|
|
|
d1/d11/a1
|
|
|
R d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# rename --after a single file to a nonexistant target filename
|
|
|
d1/a: not recording move - dummy does not exist
|
|
|
# move a single file to an existing directory
|
|
|
A d2/a1
|
|
|
d1/d11/a1
|
|
|
R d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move --after a single file to an existing directory
|
|
|
A d2/a1
|
|
|
d1/d11/a1
|
|
|
R d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# rename a file using a relative path
|
|
|
A d1/d11/e
|
|
|
d2/b
|
|
|
R d2/b
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# rename --after a file using a relative path
|
|
|
A d1/d11/e
|
|
|
d2/b
|
|
|
R d2/b
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# rename directory d1 as d3
|
|
|
moving d1/a to d3/a
|
|
|
moving d1/b to d3/b
|
|
|
moving d1/ba to d3/ba
|
|
|
moving d1/d11/a1 to d3/d11/a1
|
|
|
A d3/a
|
|
|
d1/a
|
|
|
A d3/b
|
|
|
d1/b
|
|
|
A d3/ba
|
|
|
d1/ba
|
|
|
A d3/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# rename --after directory d1 as d3
|
|
|
moving d1/a to d3/a
|
|
|
moving d1/b to d3/b
|
|
|
moving d1/ba to d3/ba
|
|
|
moving d1/d11/a1 to d3/d11/a1
|
|
|
A d3/a
|
|
|
d1/a
|
|
|
A d3/b
|
|
|
d1/b
|
|
|
A d3/ba
|
|
|
d1/ba
|
|
|
A d3/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move a directory using a relative path
|
|
|
moving ../d1/d11/a1 to d3/d11/a1
|
|
|
A d2/d3/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move --after a directory using a relative path
|
|
|
moving ../d1/d11/a1 to d3/d11/a1
|
|
|
A d2/d3/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move directory d1/d11 to an existing directory d2 (removes empty d1)
|
|
|
moving d1/d11/a1 to d2/d11/a1
|
|
|
A d2/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move directories d1 and d2 to a new directory d3
|
|
|
moving d1/a to d3/d1/a
|
|
|
moving d1/b to d3/d1/b
|
|
|
moving d1/ba to d3/d1/ba
|
|
|
moving d1/d11/a1 to d3/d1/d11/a1
|
|
|
moving d2/b to d3/d2/b
|
|
|
A d3/d1/a
|
|
|
d1/a
|
|
|
A d3/d1/b
|
|
|
d1/b
|
|
|
A d3/d1/ba
|
|
|
d1/ba
|
|
|
A d3/d1/d11/a1
|
|
|
d1/d11/a1
|
|
|
A d3/d2/b
|
|
|
d2/b
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
R d2/b
|
|
|
5 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move --after directories d1 and d2 to a new directory d3
|
|
|
moving d1/a to d3/d1/a
|
|
|
moving d1/b to d3/d1/b
|
|
|
moving d1/ba to d3/d1/ba
|
|
|
moving d1/d11/a1 to d3/d1/d11/a1
|
|
|
moving d2/b to d3/d2/b
|
|
|
A d3/d1/a
|
|
|
d1/a
|
|
|
A d3/d1/b
|
|
|
d1/b
|
|
|
A d3/d1/ba
|
|
|
d1/ba
|
|
|
A d3/d1/d11/a1
|
|
|
d1/d11/a1
|
|
|
A d3/d2/b
|
|
|
d2/b
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
R d2/b
|
|
|
5 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move everything under directory d1 to existing directory d2, do not
|
|
|
# overwrite existing files (d2/b)
|
|
|
d2/b: not overwriting - file exists
|
|
|
moving d1/d11/a1 to d2/d11/a1
|
|
|
A d2/a
|
|
|
d1/a
|
|
|
A d2/ba
|
|
|
d1/ba
|
|
|
A d2/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
1c1
|
|
|
< d1/b
|
|
|
---
|
|
|
> d2/b
|
|
|
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# attempt to move one file into a non-existent directory
|
|
|
abort: destination dx/ is not a directory
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# attempt to move potentially more than one file into a non-existent
|
|
|
# directory
|
|
|
abort: with multiple sources, destination must be an existing directory
|
|
|
# move every file under d1 to d2/d21 (glob)
|
|
|
moving d1/a to d2/d21/a
|
|
|
moving d1/b to d2/d21/b
|
|
|
moving d1/ba to d2/d21/ba
|
|
|
moving d1/d11/a1 to d2/d21/a1
|
|
|
A d2/d21/a
|
|
|
d1/a
|
|
|
A d2/d21/a1
|
|
|
d1/d11/a1
|
|
|
A d2/d21/b
|
|
|
d1/b
|
|
|
A d2/d21/ba
|
|
|
d1/ba
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move --after some files under d1 to d2/d21 (glob)
|
|
|
moving d1/a to d2/d21/a
|
|
|
d1/b: not recording move - d2/d21/b does not exist
|
|
|
d1/ba: not recording move - d2/d21/ba does not exist
|
|
|
moving d1/d11/a1 to d2/d21/a1
|
|
|
A d2/d21/a
|
|
|
d1/a
|
|
|
A d2/d21/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/d11/a1
|
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move every file under d1 starting with an 'a' to d2/d21 (regexp)
|
|
|
moving d1/a to d2/d21/a
|
|
|
moving d1/d11/a1 to d2/d21/a1
|
|
|
A d2/d21/a
|
|
|
d1/a
|
|
|
A d2/d21/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/d11/a1
|
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# attempt to overwrite an existing file
|
|
|
d1/ca: not overwriting - file exists
|
|
|
? d1/ca
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# forced overwrite of an existing file
|
|
|
A d1/ca
|
|
|
d1/ba
|
|
|
R d1/ba
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# replace a symlink with a file
|
|
|
A d1/ca
|
|
|
d1/ba
|
|
|
R d1/ba
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# do not copy more than one source file to the same destination file
|
|
|
moving d1/d11/a1 to d3/d11/a1
|
|
|
d3/b: not overwriting - d2/b collides with d1/b
|
|
|
A d3/a
|
|
|
d1/a
|
|
|
A d3/b
|
|
|
d1/b
|
|
|
A d3/ba
|
|
|
d1/ba
|
|
|
A d3/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move a whole subtree with "hg rename ."
|
|
|
moving a to ../d3/d1/a
|
|
|
moving b to ../d3/d1/b
|
|
|
moving ba to ../d3/d1/ba
|
|
|
moving d11/a1 to ../d3/d1/d11/a1
|
|
|
A d3/d1/a
|
|
|
d1/a
|
|
|
A d3/d1/b
|
|
|
d1/b
|
|
|
A d3/d1/ba
|
|
|
d1/ba
|
|
|
A d3/d1/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move a whole subtree with "hg rename --after ."
|
|
|
moving a to ../d3/a
|
|
|
moving b to ../d3/b
|
|
|
moving ba to ../d3/ba
|
|
|
moving d11/a1 to ../d3/d11/a1
|
|
|
A d3/a
|
|
|
d1/a
|
|
|
A d3/b
|
|
|
d1/b
|
|
|
A d3/ba
|
|
|
d1/ba
|
|
|
A d3/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# move the parent tree with "hg rename .."
|
|
|
moving ../a to ../../d3/a
|
|
|
moving ../b to ../../d3/b
|
|
|
moving ../ba to ../../d3/ba
|
|
|
moving a1 to ../../d3/d11/a1
|
|
|
A d3/a
|
|
|
d1/a
|
|
|
A d3/b
|
|
|
d1/b
|
|
|
A d3/ba
|
|
|
d1/ba
|
|
|
A d3/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# skip removed files
|
|
|
moving d1/a to d3/a
|
|
|
moving d1/ba to d3/ba
|
|
|
moving d1/d11/a1 to d3/d11/a1
|
|
|
A d3/a
|
|
|
d1/a
|
|
|
A d3/ba
|
|
|
d1/ba
|
|
|
A d3/d11/a1
|
|
|
d1/d11/a1
|
|
|
R d1/a
|
|
|
R d1/b
|
|
|
R d1/ba
|
|
|
R d1/d11/a1
|
|
|
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# transitive rename
|
|
|
A d1/bc
|
|
|
d1/b
|
|
|
R d1/b
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# transitive rename --after
|
|
|
A d1/bc
|
|
|
d1/b
|
|
|
R d1/b
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# idempotent renames (d1/b -> d1/bb followed by d1/bb -> d1/b)
|
|
|
M d1/b
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
# overwriting with renames (issue1959)
|
|
|
A d1/a
|
|
|
d1/b
|
|
|
A d1/c
|
|
|
d1/a
|
|
|
R d1/b
|
|
|
diff --git a/d1/b b/d1/a
|
|
|
rename from d1/b
|
|
|
rename to d1/a
|
|
|
diff --git a/d1/a b/d1/c
|
|
|
copy from d1/a
|
|
|
copy to d1/c
|
|
|
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
# check illegal path components
|
|
|
abort: path contains illegal component: .hg/foo
|
|
|
abort: ../foo not under root
|
|
|
abort: path contains illegal component: .hg/foo
|
|
|
! d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
abort: path contains illegal component: .hg/a1
|
|
|
abort: ../a1 not under root
|
|
|
abort: path contains illegal component: .hg/a1
|
|
|
! d1/d11/a1
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
abort: path contains illegal component: .hg/foo
|
|
|
abort: ../../../foo not under root
|
|
|
|