encoding: improve handling of buggy getpreferredencoding() on Mac OS X
Prior to version 2.7, calling locale.getpreferredencoding() would
always return 'mac-roman' on Mac OS X. Previously, this was handled by
a call to locale.setlocale(). Unfortunately, Python 2.6.5 and older
have a bug where isspace() would incorrectly report True for 0x85 and
0xa0 after such a call.
In order to fix this, we replace the previous _encodingfixup mapping
to an _encodingfixers mapping. Rather than mapping encodings to their
replacement, it maps them to a function returning the
replacement. This allows us to provide an simplified implementation of
getpreferredencoding() which extracts the expected encoding and
restores the locale.
This fix is based on a patch originally submitted by Martijn Pieters
as well as feedback from Brodie Rao.
#!/bin/sh
"$TESTDIR/hghave" tla || exit 80
mkdir do_not_use_HOME_tla
cd do_not_use_HOME_tla
HOME=`pwd`; export HOME
cd ..
tla my-id "mercurial <mercurial@selenic.com>"
echo "[extensions]" >> $HGRCPATH
echo "convert=" >> $HGRCPATH
echo 'graphlog =' >> $HGRCPATH
echo % create tla archive
tla make-archive tla@mercurial--convert `pwd`/hg-test-convert-tla
echo % initialize tla repo
mkdir tla-repo
cd tla-repo/
tla init-tree tla@mercurial--convert/tla--test--0
tla import
echo % create initial files
echo 'this is a file' > a
tla add a
mkdir src
tla add src
cd src
dd count=1 if=/dev/zero of=b > /dev/null 2> /dev/null
tla add b
tla commit -s "added a file, src and src/b (binary)"
echo % create link file and modify a
ln -s ../a a-link
tla add a-link
echo 'this a modification to a' >> ../a
tla commit -s "added link to a and modify a"
echo % create second link and modify b
ln -s ../a a-link-2
tla add a-link-2
dd count=1 seek=1 if=/dev/zero of=b > /dev/null 2> /dev/null
tla commit -s "added second link and modify b"
echo % b file to link and a-link-2 to regular file
rm -f a-link-2
echo 'this is now a regular file' > a-link-2
ln -sf ../a b
tla commit -s "file to link and link to file test"
echo % move a-link-2 file and src directory
cd ..
tla mv src/a-link-2 c
tla mv src test
tla commit -s "move and rename a-link-2 file and src directory"
cd ..
echo % converting tla repo to Mercurial
hg convert tla-repo tla-repo-hg
tla register-archive -d tla@mercurial--convert
glog()
{
hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@"
}
echo % show graph log
glog -R tla-repo-hg
hg up -q -R tla-repo-hg
hg -R tla-repo-hg manifest --debug