merge with stable
authorMartin Geisler <mg@lazybytes.net>
Sun, 12 Sep 2010 14:00:40 +0200
changeset 12261 fac20d9b7cf2
parent 12260 0a63e91c519d (current diff)
parent 12252 4481f8a93c7a (diff)
child 12262 df5386ae41b9
merge with stable
--- a/hgext/convert/darcs.py	Sun Sep 12 12:11:39 2010 +0200
+++ b/hgext/convert/darcs.py	Sun Sep 12 14:00:40 2010 +0200
@@ -83,6 +83,8 @@
         shutil.rmtree(self.tmppath, ignore_errors=True)
 
     def xml(self, cmd, **kwargs):
+        # NOTE: darcs is currently encoding agnostic and will print
+        # patch metadata byte-for-byte, even in the XML changelog.
         etree = ElementTree()
         fp = self._run(cmd, **kwargs)
         etree.parse(fp)
@@ -107,8 +109,12 @@
         elt = self.changes[rev]
         date = util.strdate(elt.get('local_date'), '%a %b %d %H:%M:%S %Z %Y')
         desc = elt.findtext('name') + '\n' + elt.findtext('comment', '')
-        return commit(author=elt.get('author'), date=util.datestr(date),
-                      desc=desc.strip(), parents=self.parents[rev])
+        # etree can return unicode objects for name, comment, and author,
+        # so recode() is used to ensure str objects are emitted.
+        return commit(author=self.recode(elt.get('author')),
+                      date=util.datestr(date),
+                      desc=self.recode(desc).strip(),
+                      parents=self.parents[rev])
 
     def pull(self, rev):
         output, status = self.run('pull', self.path, all=True,
--- a/tests/test-convert-darcs	Sun Sep 12 12:11:39 2010 +0200
+++ b/tests/test-convert-darcs	Sun Sep 12 14:00:40 2010 +0200
@@ -56,13 +56,18 @@
 rm dir/d2
 darcs mv dir dir2
 darcs record -a -l -m p3
-cd ..
+
+echo % test utf-8 commit message and author
+echo g > g
+# darcs is encoding agnostic, so it takes whatever bytes it's given
+darcs record -a -l -m 'p4: desc ñ' -A 'author ñ'
 
 glog()
 {
-    hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@"
+    HGENCODING=utf-8 hg glog --template '{rev} "{desc|firstline}" ({author}) files: {files}\n' "$@"
 }
 
+cd ..
 hg convert darcs-repo darcs-repo-hg
 # The converter does not currently handle patch conflicts very well.
 # When they occur, it reverts *all* changes and moves forward,
--- a/tests/test-convert-darcs.out	Sun Sep 12 12:11:39 2010 +0200
+++ b/tests/test-convert-darcs.out	Sun Sep 12 14:00:40 2010 +0200
@@ -12,26 +12,32 @@
 Finished recording patch 'p2'
 % test file and directory move
 Finished recording patch 'p3'
+% test utf-8 commit message and author
+Finished recording patch 'p4: desc ñ'
 initializing destination darcs-repo-hg repository
 scanning source...
 sorting...
 converting...
-4 p0
-3 p1.2
-2 p1.1
-1 p2
-0 p3
-o  4 "p3" files: dir/d dir/d2 dir2/d f ff
+5 p0
+4 p1.2
+3 p1.1
+2 p2
+1 p3
+0 p4: desc ?
+o  5 "p4: desc ñ" (author ñ) files: g
 |
-o  3 "p2" files: a dir/d dir/d2 f
+o  4 "p3" (test@example.org) files: dir/d dir/d2 dir2/d f ff
 |
-o  2 "p1.1" files:
+o  3 "p2" (test@example.org) files: a dir/d dir/d2 f
 |
-o  1 "p1.2" files: a b
+o  2 "p1.1" (test@example.org) files:
 |
-o  0 "p0" files: a
+o  1 "p1.2" (test@example.org) files: a b
+|
+o  0 "p0" (test@example.org) files: a
 
 7225b30cdf38257d5cc7780772c051b6f33e6d6b 644   a
 1e88685f5ddec574a34c70af492f95b6debc8741 644   b
 37406831adc447ec2385014019599dfec953c806 644   dir2/d
 b783a337463792a5c7d548ad85a7d3253c16ba8c 644   ff
+0973eb1b2ecc4de7fafe7447ce1b7462108b4848 644   g