py3kcompat: added fake ord implementation for py3k
In py3k, a bytes object __getitem__ will return an int instead of a
one-character bytes object. This has negative consequences when we want to
ord(), like in the following example:
>>> b'foo'[0]
102
>>> ord(b'foo'[0])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ord() expected string of length 1, but int found
This patch overrides the default ord() implementation to just return an int
that's what is passed as an argument for ord(). Making the above call succeed:
>>> ord(b'foo'[0])
102
#!/bin/sh
# test stripping of filelogs where the linkrev doesn't always increase
. $TESTDIR/helpers.sh
echo '[extensions]' >> $HGRCPATH
echo 'hgext.mq =' >> $HGRCPATH
hg init orig
cd orig
commit()
{
hg up -qC null
count=1
for i in "$@"; do
for f in $i; do
echo $count > $f
done
count=`expr $count + 1`
done
hg commit -qAm "$*"
}
# 2 1 0 2 0 1 2
commit '201 210'
commit '102 120' '210'
commit '021'
commit '201' '021 120'
commit '012 021' '102 201' '120 210'
commit 'manifest-file'
commit '102 120' '012 210' '021 201'
commit '201 210' '021 120' '012 102'
HGUSER=another-user; export HGUSER
commit 'manifest-file'
commit '012' 'manifest-file'
cd ..
hg clone -q -U -r -1 -r -2 -r -3 -r -4 -r -6 orig crossed
for i in crossed/.hg/store/00manifest.i crossed/.hg/store/data/*.i; do
echo $i
hg debugindex $i
echo
done
for i in 0 1 2 3 4; do
hg clone -q -U --pull crossed $i
echo "% Trying to strip revision $i"
hg --cwd $i strip $i | hidebackup
echo "% Verifying"
hg --cwd $i verify
echo
done