view tests/test-rename.out @ 2039:0c438fd25e6e

bash_completion: small optimization Right now we always call "hg help $cmd" to get the canonical name of $cmd (i.e. to go from "co" to "update"). This patch optimistically assumes that $cmd is already the canonical form and tries to generate completions for it. If that fails, it falls back to canonicalizing $cmd and trying again. This means that: - if a command or alias is explicitly handled by the _hg_command_specific function, things get somewhat faster - as long as the canonical $cmd is handled by _hg_command_specific, all its aliases and abbreviations are also handled.
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Sun, 02 Apr 2006 18:20:52 +0200
parents df8416346bb7
children b2ae81a7df29
line wrap: on
line source

# rename a single file
A d2/c
R d1/d11/a1
# rename --after a single file
A d2/c
R d1/d11/a1
# move a single file to an existing directory
A d2/a1
R d1/d11/a1
# move --after a single file to an existing directory
A d2/a1
R d1/d11/a1
# rename a file using a relative path
A d1/d11/e
R d2/b
# rename --after a file using a relative path
A d1/d11/e
R d2/b
# rename directory d1 as d3
copying d1/a to d3/a
copying d1/b to d3/b
copying d1/ba to d3/ba
copying d1/d11/a1 to d3/d11/a1
removing d1/a
removing d1/b
removing d1/ba
removing d1/d11/a1
A d3/a
A d3/b
A d3/ba
A d3/d11/a1
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
# rename --after directory d1 as d3
copying d1/a to d3/a
copying d1/b to d3/b
copying d1/ba to d3/ba
copying d1/d11/a1 to d3/d11/a1
removing d1/a
removing d1/b
removing d1/ba
removing d1/d11/a1
A d3/a
A d3/b
A d3/ba
A d3/d11/a1
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
# move a directory using a relative path
copying ../d1/d11/a1 to d3/d11/a1
removing ../d1/d11/a1
A d2/d3/d11/a1
R d1/d11/a1
# move --after a directory using a relative path
copying ../d1/d11/a1 to d3/d11/a1
removing ../d1/d11/a1
A d2/d3/d11/a1
R d1/d11/a1
# move directory d1/d11 to an existing directory d2 (removes empty d1)
copying d1/d11/a1 to d2/d11/a1
removing d1/d11/a1
A d2/d11/a1
R d1/d11/a1
# move directories d1 and d2 to a new directory d3
copying d1/a to d3/d1/a
copying d1/b to d3/d1/b
copying d1/ba to d3/d1/ba
copying d1/d11/a1 to d3/d1/d11/a1
copying d2/b to d3/d2/b
removing d1/a
removing d1/b
removing d1/ba
removing d1/d11/a1
removing d2/b
A d3/d1/a
A d3/d1/b
A d3/d1/ba
A d3/d1/d11/a1
A d3/d2/b
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
R d2/b
# move --after directories d1 and d2 to a new directory d3
copying d1/a to d3/d1/a
copying d1/b to d3/d1/b
copying d1/ba to d3/d1/ba
copying d1/d11/a1 to d3/d1/d11/a1
copying d2/b to d3/d2/b
removing d1/a
removing d1/b
removing d1/ba
removing d1/d11/a1
removing d2/b
A d3/d1/a
A d3/d1/b
A d3/d1/ba
A d3/d1/d11/a1
A d3/d2/b
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
R d2/b
# move everything under directory d1 to existing directory d2, do not
# overwrite existing files (d2/b)
d2/b: not overwriting - file exists
copying d1/d11/a1 to d2/d11/a1
removing d1/d11/a1
A d2/a
A d2/ba
A d2/d11/a1
R d1/a
R d1/ba
R d1/d11/a1
1c1
< d1/b
---
> d2/b
# 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)
copying d1/a to d2/d21/a
copying d1/b to d2/d21/b
copying d1/ba to d2/d21/ba
copying d1/d11/a1 to d2/d21/a1
removing d1/a
removing d1/b
removing d1/ba
removing d1/d11/a1
A d2/d21/a
A d2/d21/a1
A d2/d21/b
A d2/d21/ba
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
# move --after some files under d1 to d2/d21 (glob)
copying d1/a to d2/d21/a
copying d1/d11/a1 to d2/d21/a1
removing d1/a
removing d1/d11/a1
A d2/d21/a
A d2/d21/a1
R d1/a
R d1/d11/a1
# move every file under d1 starting with an 'a' to d2/d21 (regexp)
copying d1/a to d2/d21/a
copying d1/d11/a1 to d2/d21/a1
removing d1/a
removing d1/d11/a1
A d2/d21/a
A d2/d21/a1
R d1/a
R d1/d11/a1
# attempt to overwrite an existing file
d1/ca: not overwriting - file exists
? d1/ca
# forced overwrite of an existing file
A d1/ca
R d1/ba
# replace a symlink with a file
A d1/ca
R d1/ba
# do not copy more than one source file to the same destination file
copying d1/d11/a1 to d3/d11/a1
d3/b: not overwriting - d2/b collides with d1/b
removing d1/d11/a1
A d3/a
A d3/b
A d3/ba
A d3/d11/a1
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
# move a whole subtree with "hg rename ."
copying a to ../d3/d1/a
copying b to ../d3/d1/b
copying ba to ../d3/d1/ba
copying d11/a1 to ../d3/d1/d11/a1
removing a
removing b
removing ba
removing d11/a1
A d3/d1/a
A d3/d1/b
A d3/d1/ba
A d3/d1/d11/a1
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
# move a whole subtree with "hg rename --after ."
copying a to ../d3/a
copying b to ../d3/b
copying ba to ../d3/ba
copying d11/a1 to ../d3/d11/a1
removing a
removing b
removing ba
removing d11/a1
A d3/a
A d3/b
A d3/ba
A d3/d11/a1
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
# move the parent tree with "hg rename .."
copying ../a to ../../d3/a
copying ../b to ../../d3/b
copying ../ba to ../../d3/ba
copying a1 to ../../d3/d11/a1
removing ../a
removing ../b
removing ../ba
removing a1
A d3/a
A d3/b
A d3/ba
A d3/d11/a1
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
# skip removed files
copying d1/a to d3/a
copying d1/ba to d3/ba
copying d1/d11/a1 to d3/d11/a1
removing d1/a
removing d1/ba
removing d1/d11/a1
A d3/a
A d3/ba
A d3/d11/a1
R d1/a
R d1/b
R d1/ba
R d1/d11/a1
# transitive rename
A d1/bc
R d1/b
# transitive rename --after
A d1/bc
R d1/b
# idempotent renames (d1/b -> d1/bb followed by d1/bb -> d1/b)
M d1/b
# 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
abort: path contains illegal component: .hg/a1

abort: ../a1 not under root
abort: path contains illegal component: .hg/a1

! d1/d11/a1
abort: path contains illegal component: .hg/foo

abort: ../../../foo not under root