[PATCH] convert.monotone: fix quotes and backslashes in change descriptions

David Reiss davidn at gmail.com
Thu May 29 00:10:11 CDT 2008


# HG changeset patch
# User David Reiss <davidn at gmail.com>
# Date 1210924103 25200
# Node ID 2bf316567e5f29b35c19ba0e5a9831337689cbbf
# Parent  bf2bf986ff873a2cdac2df6ffa4346a8b2da63e3
convert.monotone: fix quotes and backslashes in change descriptions.

diff -r bf2bf986ff87 -r 2bf316567e5f hgext/convert/monotone.py
--- a/hgext/convert/monotone.py	Mon May 12 11:37:56 2008 -0500
+++ b/hgext/convert/monotone.py	Fri May 16 00:48:23 2008 -0700
@@ -16,7 +16,7 @@
 
         # regular expressions for parsing monotone output
         space    = r'\s*'
-        name     = r'\s+"((?:[^"]|\\")*)"\s*'
+        name     = r'\s+"((?:\\"|[^"])*)"\s*'
         value    = name
         revision = r'\s+\[(\w+)\]\s*'
         lines    = r'(?:.|\n)+'
@@ -98,11 +98,14 @@
     def mtngetcerts(self, rev):
         certs = {"author":"<missing>", "date":"<missing>",
             "changelog":"<missing>", "branch":"<missing>"}
-        cert_list = self.mtnrun("certs", rev).split("\n\n")
+        cert_list = self.mtnrun("certs", rev).split('\n\n      key "')
         for e in cert_list:
             m = self.cert_re.match(e)
             if m:
-                certs[m.group(1)] = m.group(2)
+                name, value = m.groups()
+                value = value.replace(r'\"', '"')
+                value = value.replace(r'\\', '\\')
+                certs[name] = value
         return certs
 
     def mtnrenamefiles(self, files, fromdir, todir):


More information about the Mercurial-devel mailing list