[PATCH 2 of 5] convert: add config to not convert tags

Durham Goode durham at fb.com
Mon Jun 29 20:44:02 CDT 2015


# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1435610420 25200
#      Mon Jun 29 13:40:20 2015 -0700
# Node ID 2fb1cd9032338750bfe16e0c21933bbb622c9da0
# Parent  af9d42a3e9c6d03411e7713cf174ada52c81472c
convert: add config to not convert tags

In some cases we do not want to convert tags from the source repo to be tags in
the target repo (for instance, in a large repository, hgtags cause scaling
issues so we want to avoid them). This adds a config option to disable
converting tags.

diff --git a/hgext/convert/convcmd.py b/hgext/convert/convcmd.py
--- a/hgext/convert/convcmd.py
+++ b/hgext/convert/convcmd.py
@@ -460,22 +460,23 @@ class converter(object):
                 self.copy(c)
             self.ui.progress(_('converting'), None)
 
-            tags = self.source.gettags()
-            ctags = {}
-            for k in tags:
-                v = tags[k]
-                if self.map.get(v, SKIPREV) != SKIPREV:
-                    ctags[k] = self.map[v]
+            if not self.ui.configbool('convert', 'skiptags'):
+                tags = self.source.gettags()
+                ctags = {}
+                for k in tags:
+                    v = tags[k]
+                    if self.map.get(v, SKIPREV) != SKIPREV:
+                        ctags[k] = self.map[v]
 
-            if c and ctags:
-                nrev, tagsparent = self.dest.puttags(ctags)
-                if nrev and tagsparent:
-                    # write another hash correspondence to override the previous
-                    # one so we don't end up with extra tag heads
-                    tagsparents = [e for e in self.map.iteritems()
-                                   if e[1] == tagsparent]
-                    if tagsparents:
-                        self.map[tagsparents[0][0]] = nrev
+                if c and ctags:
+                    nrev, tagsparent = self.dest.puttags(ctags)
+                    if nrev and tagsparent:
+                        # write another hash correspondence to override the
+                        # previous one so we don't end up with extra tag heads
+                        tagsparents = [e for e in self.map.iteritems()
+                                       if e[1] == tagsparent]
+                        if tagsparents:
+                            self.map[tagsparents[0][0]] = nrev
 
             bookmarks = self.source.getbookmarks()
             cbookmarks = {}
diff --git a/tests/test-convert-tagsbranch-topology.t b/tests/test-convert-tagsbranch-topology.t
--- a/tests/test-convert-tagsbranch-topology.t
+++ b/tests/test-convert-tagsbranch-topology.t
@@ -45,6 +45,19 @@ Build a GIT repo with at least 1 tag
   $ action tag -m "tag1" tag1
   $ cd ..
 
+Convert without tags
+
+  $ hg convert git-repo hg-repo --config convert.skiptags=True
+  initializing destination hg-repo repository
+  scanning source...
+  sorting...
+  converting...
+  0 rev1
+  updating bookmarks
+  $ hg -R hg-repo tags
+  tip                                0:d98c8ad3a4cf
+  $ rm -rf hg-repo
+
 Do a first conversion
 
   $ convertrepo


More information about the Mercurial-devel mailing list