view tests/test-encoding @ 5338:f87685355c9c

revlog: fix revlogio.packentry corner case We want to store version information about the revlog in the first entry of its index. The code in packentry was using some heuristics to detect whether this was the first entry, but these heuristics could fail in some cases (e.g. rev 0 was empty; rev 1 descends directly from the nullid and is stored as a delta). We now give the revision number to packentry to avoid heuristics.
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Wed, 26 Sep 2007 01:58:45 -0300
parents 46abbed02b2d
children
line wrap: on
line source

#!/bin/sh

hg init t
cd t

# we need a repo with some legacy latin-1 changesets
hg unbundle $TESTDIR/legacy-encoding.hg
hg co

python << EOF
f = file('latin-1', 'w'); f.write("latin-1 e' encoded: \xe9"); f.close()
f = file('utf-8', 'w'); f.write("utf-8 e' encoded: \xc3\xa9"); f.close()
f = file('latin-1-tag', 'w'); f.write("\xe9"); f.close()
EOF

echo % should fail with encoding error
echo "plain old ascii" > a
hg st
HGENCODING=ascii hg ci -l latin-1 -d "1000000 0"

echo % these should work
echo "latin-1" > a
HGENCODING=latin-1 hg ci -l latin-1 -d "1000000 0"
echo "utf-8" > a
HGENCODING=utf-8 hg ci -l utf-8 -d "1000000 0"

HGENCODING=latin-1 hg tag -d "1000000 0" `cat latin-1-tag`
HGENCODING=latin-1 hg branch `cat latin-1-tag`
HGENCODING=latin-1 hg ci -d "1000000 0" -m 'latin1 branch'
rm .hg/branch

echo % ascii
hg --encoding ascii log
echo % latin-1
hg --encoding latin-1 log
echo % utf-8
hg --encoding utf-8 log
echo % ascii
HGENCODING=ascii hg tags
echo % latin-1
HGENCODING=latin-1 hg tags
echo % utf-8
HGENCODING=utf-8 hg tags
echo % ascii
HGENCODING=ascii hg branches
echo % latin-1
HGENCODING=latin-1 hg branches
echo % utf-8
HGENCODING=utf-8 hg branches

echo '[ui]' >> .hg/hgrc
echo 'fallbackencoding = koi8-r' >> .hg/hgrc
echo % utf-8
HGENCODING=utf-8 hg log

HGENCODING=dolphin hg log

HGENCODING=ascii hg branch `cat latin-1-tag`
cp latin-1-tag .hg/branch
HGENCODING=latin-1 hg ci -d "1000000 0" -m 'should fail'
exit 0