convert/darcs: handle non-ASCII metadata in darcs changelog (issue2354)
Given a commit author or message with non-ASCII characters in a darcs
repo, convert would raise a UnicodeEncodeError when adding changesets
to the hg changelog.
This happened because etree returns back unicode objects for any text
it can't encode into ASCII. convert was passing these objects to
changelog.add(), which would then attempt encoding.fromlocal() on
them.
This patch ensures converter_source.recode() is called on each piece
of commit data returned by etree.
(Also note that darcs is currently encoding agnostic and will print
out whatever is in a patch's metadata byte-for-byte, even in the XML
changelog.)
#!/bin/sh
mkdir t
cd t
hg init
echo "added file1" > file1
echo "added file2" > file2
hg add file1 file2
hg commit -m "added file1 and file2" -d "1000000 0" -u user
echo "changed file1" >> file1
hg commit -m "changed file1" -d "1000000 0" -u user
hg -q log
hg id
hg update -C 0
hg id
echo "changed file1" >> file1
hg id
hg revert --all
hg diff
hg status
hg id
hg update
hg diff
hg status
hg id
hg update -C 0
echo "changed file1" >> file1
hg update
hg diff
hg status
hg id
hg revert --all
hg diff
hg status
hg id
hg revert -r tip --all
hg diff
hg status
hg id
hg update -C
hg diff
hg status
hg id