Do not use osutil.c with python 2.4 and Windows (
issue1364)
Windows python 2.4 os.stat() reports times including DST offset, while osutil.c
reports the correct value, which makes status() systematically compare files
content. This bug is fixed in python 2.5. Using osutil.py instead of osutil.c
is 4x times slower on large repositories but current code is completely
unusable. Given few people are likely to use python 2.4 on Windows this
solution was considered a good trade-off compared to more invasive solutions
trying to address the offset issue.
#!/bin/sh
fixheaders()
{
sed -e 's/\(Message-Id:.*@\).*/\1/' \
-e 's/\(In-Reply-To:.*@\).*/\1/' \
-e 's/\(References:.*@\).*/\1/' \
-e 's/\(User-Agent:.*\)\/.*/\1/' \
-e 's/===.*/===/'
}
echo "[extensions]" >> $HGRCPATH
echo "patchbomb=" >> $HGRCPATH
hg init t
cd t
echo a > a
hg commit -Ama -d '1 0'
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip | \
fixheaders
echo b > b
hg commit -Amb -d '2 0'
hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip | \
fixheaders
hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip
cd ..
hg clone -q t t2
cd t2
echo c > c
hg commit -Amc -d '3 0'
cat > description <<EOF
a multiline
description
EOF
echo "% test bundle and description"
hg email --date '1970-1-1 0:3' -n -f quux -t foo \
-c bar -s test -r tip -b --desc description | \
fixheaders
echo "% utf-8 patch"
python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: base64'
echo "% no mime encoding for email --test"
hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
fixheaders > mailtest
echo "% md5sum of 8-bit output"
$TESTDIR/md5sum.py mailtest
rm mailtest
echo "% mime encoded mbox (base64)"
hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
cat mbox | fixheaders
rm mbox
echo "% mime encoded mbox (quoted-printable)"
python -c 'fp = open("qp", "wb"); fp.write("%s\nfoo\n\nbar\n" % \
("x" * 1024)); fp.close();'
hg commit -A -d '4 0' -m \
'charset=utf-8; content-transfer-encoding: quoted-printable'
echo "% no mime encoding for email --test"
hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
fixheaders > mailtest
echo "% md5sum of qp output"
$TESTDIR/md5sum.py mailtest
rm mailtest
echo "% mime encoded mbox (quoted-printable)"
hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
cat mbox | fixheaders
rm mbox
echo "% iso-8859-1 patch"
python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
hg commit -A -d '5 0' -m 'charset=us-ascii; content-transfer-encoding: 8bit'
echo "% fake ascii mbox"
hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
fixheaders < mbox > mboxfix
echo "% md5sum of 8-bit output"
$TESTDIR/md5sum.py mboxfix
echo "% test diffstat for single patch"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | \
fixheaders
echo "% test diffstat for multiple patches"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
-r 0:1 | fixheaders
echo "% test inline for single patch"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
fixheaders
echo "% test inline for single patch (quoted-printable)"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | \
fixheaders
echo "% test inline for multiple patches"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
-r 0:1 -r 4 | fixheaders
echo "% test attach for single patch"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | \
fixheaders
echo "% test attach for single patch (quoted-printable)"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | \
fixheaders
echo "% test attach for multiple patches"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
-r 0:1 -r 4 | fixheaders
echo "% test intro for single patch"
hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
-r 2 | fixheaders
echo "% test intro for multiple patches"
hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
-r 0:1 | fixheaders
echo "% tagging csets"
hg tag -r0 zero zero.foo
hg tag -r1 one one.patch
hg tag -r2 two two.diff
echo "% test inline for single named patch"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
fixheaders
echo "% test inline for multiple named/unnamed patches"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1 | \
fixheaders
echo "% test inreplyto"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
-r tip | fixheaders
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
-r 0:1 | fixheaders
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
-s test -r 0:1 | fixheaders
echo "% test single flag for single patch"
hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
-r 2 | fixheaders
echo "% test single flag for multiple patches"
hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
-r 0:1 | fixheaders
echo "% test mutiple flags for single patch"
hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
-c bar -s test -r 2 | fixheaders
echo "% test multiple flags for multiple patches"
hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
-c bar -s test -r 0:1 | fixheaders
echo "% test multi-address parsing"
hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
-t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
--config email.bcc='"Quux, A." <quux>'
cat tmp.mbox | fixheaders
echo "% test multi-byte domain parsing"
UUML=`python -c 'import sys; sys.stdout.write("\374")'`
HGENCODING=iso-8859-1
export HGENCODING
hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" \
-s test -r 0
cat tmp.mbox | fixheaders
echo "% test outgoing"
hg up 1
hg branch test
echo d > d
hg add d
hg ci -md -d '4 0'
hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t | fixheaders
echo "% dest#branch URIs"
hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test | fixheaders