|
|
#!/bin/sh
|
|
|
|
|
|
hg init
|
|
|
mkdir d1 d1/d11 d2
|
|
|
echo d1/a > d1/a
|
|
|
echo d1/ba > d1/ba
|
|
|
echo d1/a1 > d1/d11/a1
|
|
|
echo d1/b > d1/b
|
|
|
echo d2/b > d2/b
|
|
|
hg add d1/a d1/b d1/ba d1/d11/a1 d2/b
|
|
|
hg commit -m "1" -d "1000000 0"
|
|
|
|
|
|
echo "# rename a single file"
|
|
|
hg rename d1/d11/a1 d2/c
|
|
|
hg sum
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d2/c
|
|
|
|
|
|
echo "# rename --after a single file"
|
|
|
mv d1/d11/a1 d2/c
|
|
|
hg rename --after d1/d11/a1 d2/c
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d2/c
|
|
|
|
|
|
echo '# rename --after a single file when src and tgt already tracked'
|
|
|
mv d1/d11/a1 d2/c
|
|
|
hg addrem -s 0
|
|
|
hg rename --after d1/d11/a1 d2/c
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d2/c
|
|
|
|
|
|
echo "# rename --after a single file to a nonexistant target filename"
|
|
|
hg rename --after d1/a dummy
|
|
|
|
|
|
echo "# move a single file to an existing directory"
|
|
|
hg rename d1/d11/a1 d2
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d2/a1
|
|
|
|
|
|
echo "# move --after a single file to an existing directory"
|
|
|
mv d1/d11/a1 d2
|
|
|
hg rename --after d1/d11/a1 d2
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d2/a1
|
|
|
|
|
|
echo "# rename a file using a relative path"
|
|
|
(cd d1/d11; hg rename ../../d2/b e)
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d1/d11/e
|
|
|
|
|
|
echo "# rename --after a file using a relative path"
|
|
|
(cd d1/d11; mv ../../d2/b e; hg rename --after ../../d2/b e)
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d1/d11/e
|
|
|
|
|
|
echo "# rename directory d1 as d3"
|
|
|
hg rename d1/ d3
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d3
|
|
|
|
|
|
echo "# rename --after directory d1 as d3"
|
|
|
mv d1 d3
|
|
|
hg rename --after d1 d3
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d3
|
|
|
|
|
|
echo "# move a directory using a relative path"
|
|
|
(cd d2; mkdir d3; hg rename ../d1/d11 d3)
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d2/d3
|
|
|
|
|
|
echo "# move --after a directory using a relative path"
|
|
|
(cd d2; mkdir d3; mv ../d1/d11 d3; hg rename --after ../d1/d11 d3)
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d2/d3
|
|
|
|
|
|
echo "# move directory d1/d11 to an existing directory d2 (removes empty d1)"
|
|
|
hg rename d1/d11/ d2
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d2/d11
|
|
|
|
|
|
echo "# move directories d1 and d2 to a new directory d3"
|
|
|
mkdir d3
|
|
|
hg rename d1 d2 d3
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d3
|
|
|
|
|
|
echo "# move --after directories d1 and d2 to a new directory d3"
|
|
|
mkdir d3
|
|
|
mv d1 d2 d3
|
|
|
hg rename --after d1 d2 d3
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d3
|
|
|
|
|
|
echo "# move everything under directory d1 to existing directory d2, do not"
|
|
|
echo "# overwrite existing files (d2/b)"
|
|
|
hg rename d1/* d2
|
|
|
hg status -C
|
|
|
diff d1/b d2/b
|
|
|
hg update -C
|
|
|
rm d2/a d2/ba d2/d11/a1
|
|
|
|
|
|
echo "# attempt to move one file into a non-existent directory"
|
|
|
hg rename d1/a dx/
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
|
|
|
echo "# attempt to move potentially more than one file into a non-existent"
|
|
|
echo "# directory"
|
|
|
hg rename 'glob:d1/**' dx
|
|
|
|
|
|
echo "# move every file under d1 to d2/d21 (glob)"
|
|
|
mkdir d2/d21
|
|
|
hg rename 'glob:d1/**' d2/d21
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d2/d21
|
|
|
|
|
|
echo "# move --after some files under d1 to d2/d21 (glob)"
|
|
|
mkdir d2/d21
|
|
|
mv d1/a d1/d11/a1 d2/d21
|
|
|
hg rename --after 'glob:d1/**' d2/d21
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d2/d21
|
|
|
|
|
|
echo "# move every file under d1 starting with an 'a' to d2/d21 (regexp)"
|
|
|
mkdir d2/d21
|
|
|
hg rename 're:d1/([^a][^/]*/)*a.*' d2/d21
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d2/d21
|
|
|
|
|
|
echo "# attempt to overwrite an existing file"
|
|
|
echo "ca" > d1/ca
|
|
|
hg rename d1/ba d1/ca
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
|
|
|
echo "# forced overwrite of an existing file"
|
|
|
echo "ca" > d1/ca
|
|
|
hg rename --force d1/ba d1/ca
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d1/ca
|
|
|
|
|
|
echo "# replace a symlink with a file"
|
|
|
ln -s ba d1/ca
|
|
|
hg rename --force d1/ba d1/ca
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d1/ca
|
|
|
|
|
|
echo "# do not copy more than one source file to the same destination file"
|
|
|
mkdir d3
|
|
|
hg rename d1/* d2/* d3
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d3
|
|
|
|
|
|
echo "# move a whole subtree with \"hg rename .\""
|
|
|
mkdir d3
|
|
|
(cd d1; hg rename . ../d3)
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d3
|
|
|
|
|
|
echo "# move a whole subtree with \"hg rename --after .\""
|
|
|
mkdir d3
|
|
|
mv d1/* d3
|
|
|
(cd d1; hg rename --after . ../d3)
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d3
|
|
|
|
|
|
echo "# move the parent tree with \"hg rename ..\""
|
|
|
(cd d1/d11; hg rename .. ../../d3)
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d3
|
|
|
|
|
|
echo "# skip removed files"
|
|
|
hg remove d1/b
|
|
|
hg rename d1 d3
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm -rf d3
|
|
|
|
|
|
echo "# transitive rename"
|
|
|
hg rename d1/b d1/bb
|
|
|
hg rename d1/bb d1/bc
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d1/bc
|
|
|
|
|
|
echo "# transitive rename --after"
|
|
|
hg rename d1/b d1/bb
|
|
|
mv d1/bb d1/bc
|
|
|
hg rename --after d1/bb d1/bc
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm d1/bc
|
|
|
|
|
|
echo "# idempotent renames (d1/b -> d1/bb followed by d1/bb -> d1/b)"
|
|
|
hg rename d1/b d1/bb
|
|
|
echo "some stuff added to d1/bb" >> d1/bb
|
|
|
hg rename d1/bb d1/b
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
|
|
|
echo '# overwriting with renames (issue1959)'
|
|
|
hg rename d1/a d1/c
|
|
|
hg rename d1/b d1/a
|
|
|
hg status -C
|
|
|
hg diff --git
|
|
|
hg update -C
|
|
|
|
|
|
echo "# check illegal path components"
|
|
|
|
|
|
hg rename d1/d11/a1 .hg/foo
|
|
|
hg status -C
|
|
|
hg rename d1/d11/a1 ../foo
|
|
|
hg status -C
|
|
|
|
|
|
mv d1/d11/a1 .hg/foo
|
|
|
hg rename --after d1/d11/a1 .hg/foo
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm .hg/foo
|
|
|
|
|
|
hg rename d1/d11/a1 .hg
|
|
|
hg status -C
|
|
|
hg rename d1/d11/a1 ..
|
|
|
hg status -C
|
|
|
|
|
|
mv d1/d11/a1 .hg
|
|
|
hg rename --after d1/d11/a1 .hg
|
|
|
hg status -C
|
|
|
hg update -C
|
|
|
rm .hg/a1
|
|
|
|
|
|
(cd d1/d11; hg rename ../../d2/b ../../.hg/foo)
|
|
|
hg status -C
|
|
|
(cd d1/d11; hg rename ../../d2/b ../../../foo)
|
|
|
hg status -C
|
|
|
|
|
|
|