# HG changeset patch # User Durham Goode # Date 1435610420 25200 # Node ID 86fe3c404c1e70d9960679c260f9d0e42b86358b # Parent 47469fa8fb01c985e296f6df50a768f23a4a55a5 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 -r 47469fa8fb01 -r 86fe3c404c1e hgext/convert/__init__.py --- a/hgext/convert/__init__.py Thu Jul 02 22:18:21 2015 +0900 +++ b/hgext/convert/__init__.py Mon Jun 29 13:40:20 2015 -0700 @@ -355,6 +355,14 @@ :convert.hg.usebranchnames: preserve branch names. The default is True. + + All Destinations + ################ + + All destination types accept the following options: + + :convert.skiptags: does not convert tags from the source repo to the target + repo. The default is False. """ return convcmd.convert(ui, src, dest, revmapfile, **opts) diff -r 47469fa8fb01 -r 86fe3c404c1e hgext/convert/convcmd.py --- a/hgext/convert/convcmd.py Thu Jul 02 22:18:21 2015 +0900 +++ b/hgext/convert/convcmd.py Mon Jun 29 13:40:20 2015 -0700 @@ -460,22 +460,23 @@ 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 -r 47469fa8fb01 -r 86fe3c404c1e tests/test-convert-tagsbranch-topology.t --- a/tests/test-convert-tagsbranch-topology.t Thu Jul 02 22:18:21 2015 +0900 +++ b/tests/test-convert-tagsbranch-topology.t Mon Jun 29 13:40:20 2015 -0700 @@ -45,6 +45,19 @@ $ 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 diff -r 47469fa8fb01 -r 86fe3c404c1e tests/test-convert.t --- a/tests/test-convert.t Thu Jul 02 22:18:21 2015 +0900 +++ b/tests/test-convert.t Mon Jun 29 13:40:20 2015 -0700 @@ -295,6 +295,15 @@ convert.hg.usebranchnames preserve branch names. The default is True. + All Destinations + ################ + + All destination types accept the following options: + + convert.skiptags + does not convert tags from the source repo to the target + repo. The default is False. + options: -s --source-type TYPE source repository type