Mercurial > hg
view tests/test-convert-tagsbranch-topology @ 12252:4481f8a93c7a stable
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.)
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Fri, 10 Sep 2010 09:30:50 -0500 |
parents | d1b135f2f415 |
children |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" git || exit 80 echo "[extensions]" >> $HGRCPATH echo "convert=" >> $HGRCPATH echo 'hgext.graphlog =' >> $HGRCPATH echo '[convert]' >> $HGRCPATH echo 'hg.usebranchnames = True' >> $HGRCPATH echo 'hg.tagsbranch = tags-update' >> $HGRCPATH GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE count=10 action() { GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000" GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" git "$@" >/dev/null 2>/dev/null || echo "git command error" count=`expr $count + 1` } glog() { hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@" } convertrepo() { hg convert --datesort git-repo hg-repo } # Build a GIT repo with at least 1 tag mkdir git-repo cd git-repo git init >/dev/null 2>&1 echo a > a git add a action commit -m "rev1" action tag -m "tag1" tag1 cd .. # Do a first conversion convertrepo # Simulate upstream updates after first conversion cd git-repo echo b > a git add a action commit -m "rev2" action tag -m "tag2" tag2 cd .. # Perform an incremental conversion convertrepo # Print the log cd hg-repo glog