Mercurial > hg
view tests/test-clone-failure.t @ 12687:34d8247a4595
store: encode first period or space in filenames (issue1713)
- Mac OS X has problems with filenames starting with '._'
(e.g. '.FOO' -> '._f_o_o' is now encoded as '~2e_f_o_o')
- Explorer of Windows Vista and Windows 7 strip leading spaces of
path elements of filenames when copying trees
Above problems are avoided by encoding the first space (as '~20') or
period (as '~2e') of all path elements.
This introduces a new entry 'dotencode' in .hg/requires, that is,
a new repository filename layout (inside .hg/store).
Newly created repositories require 'dotencode' by default. Specifying
[format]
dotencode = False
in a config file will use the old format instead.
Prior Mercurial versions will abort with the message
abort: requirement 'dotencode' not supported!
when trying to access a local repository that requires 'dotencode'.
New 'dotencode' repositories can be converted to the previous
repository format with
hg --config format.dotencode=0 clone --pull repoA repoB
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Sat, 09 Oct 2010 21:54:50 +0200 |
parents | 5d3c28a339cb |
children | bdb73eede5fb |
line wrap: on
line source
No local source $ hg clone a b abort: repository a not found! [255] No remote source $ hg clone http://127.0.0.1:3121/a b abort: error: Connection refused [255] $ rm -rf b # work around bug with http clone Inaccessible source $ mkdir a $ chmod 000 a $ hg clone a b abort: repository a not found! [255] Inaccessible destination $ mkdir b $ cd b $ hg init $ hg clone . ../a abort: Permission denied: ../a [255] $ cd .. $ chmod 700 a $ rm -r a b Source of wrong type $ if "$TESTDIR/hghave" -q fifo; then > mkfifo a > hg clone a b > rm a > else > echo "abort: repository a not found!" > echo 255 > fi abort: repository a not found! Default destination, same directory $ mkdir q $ cd q $ hg init $ cd .. $ hg clone q destination directory: q abort: destination 'q' is not empty [255] destination directory not empty $ mkdir a $ echo stuff > a/a $ hg clone q a abort: destination 'a' is not empty [255] leave existing directory in place after clone failure $ hg init c $ cd c $ echo c > c $ hg commit -A -m test adding c $ chmod -rx .hg/store/data $ cd .. $ mkdir d $ hg clone c d 2> err [255] $ test -d d $ test -d d/.hg [1] reenable perm to allow deletion $ chmod +rx c/.hg/store/data