diff hgsubversion/maps.py @ 820:09f7c1c09207

authormap: only append new or changed authors Previously, specifying an extra authormap with the hgsubversion.authormap configuration variable would cause the entirety of the other authormap to be appended to the one in '.hg/svn/authors' on each subversion access (e.g. hg in/out/pull/push). This also changes the authormap to preserve comments and the like in the authormap file.
author maugustin <maugustin@gmx.net>
date Sat, 23 Jul 2011 19:33:50 -0500
parents 9aed3bfc92d6
children f28e0f54a6ef
line wrap: on
line diff
--- a/hgsubversion/maps.py
+++ b/hgsubversion/maps.py
@@ -45,12 +45,9 @@ class AuthorMap(dict):
 
         self.ui.note('reading authormap from %s\n' % path)
         f = open(path, 'r')
-        for number, line in enumerate(f):
+        for number, line_org in enumerate(f):
 
-            if writing:
-                writing.write(line)
-
-            line = line.split('#')[0]
+            line = line_org.split('#')[0]
             if not line.strip():
                 continue
 
@@ -63,10 +60,15 @@ class AuthorMap(dict):
 
             src = src.strip()
             dst = dst.strip()
-            self.ui.debug('adding author %s to author map\n' % src)
-            if src in self and dst != self[src]:
-                msg = 'overriding author: "%s" to "%s" (%s)\n'
-                self.ui.status(msg % (self[src], dst, src))
+
+            if writing:
+                if not src in self:
+                    self.ui.debug('adding author %s to author map\n' % src)
+                elif dst != self[src]:
+                    msg = 'overriding author: "%s" to "%s" (%s)\n'
+                    self.ui.status(msg % (self[src], dst, src))
+                writing.write(line_org)
+
             self[src] = dst
 
         f.close()