[PATCH] convert/hg.py: preserve tags

Dean Roehrich Dean.Roehrich at sun.com
Thu Mar 27 11:33:35 CDT 2008


While using convert to do incremental cvs->hg conversions I noticed
that my hg repo could lose its existing tags.

Dean


# HG changeset patch
# User dean.roehrich at sun.com
# Date 1206635501 18000
# Node ID e865ff0d4c5e655e9747135d1be71308c49afdac
# Parent  1e4ddc9ac9f7abbaeaefc79995fc6abc8e43236f
convert/hg.py: preserve existing tags

diff -r 1e4ddc9ac9f7 -r e865ff0d4c5e hgext/convert/hg.py
--- a/hgext/convert/hg.py	Mon Mar 24 18:05:30 2008 -0500
+++ b/hgext/convert/hg.py	Thu Mar 27 11:31:41 2008 -0500
@@ -167,19 +167,25 @@
                 return parent
         return p2
 
+    def gettags(self):
+        tags = [t for t in self.repo.tagslist() if t[0] != 'tip']
+        return dict([(name, hex(node)) for name, node in tags])
+
     def puttags(self, tags):
-        try:
-            old = self.repo.wfile(".hgtags").read()
-            oldlines = old.splitlines(1)
-            oldlines.sort()
-        except:
-            oldlines = []
+        oldlines = []
+	new_tags = {}
+        before_tags = self.gettags()
+        for tag in before_tags.keys():
+            new_tags[tag] = before_tags[tag]
+            oldlines.append("%s %s\n" % (new_tags[tag], tag))
+        oldlines.sort()
 
         k = tags.keys()
-        k.sort()
         newlines = []
         for tag in k:
-            newlines.append("%s %s\n" % (tags[tag], tag))
+            new_tags[tag] = tags[tag]
+	for tag in new_tags.keys():
+	    newlines.append("%s %s\n" % (new_tags[tag], tag))
 
         newlines.sort()
 


More information about the Mercurial-devel mailing list