[PATCH 1 of 2 V2] convert: add config to not convert tags
Durham Goode
durham at fb.com
Tue Jul 7 00:25:34 UTC 2015
# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1435610420 25200
# Mon Jun 29 13:40:20 2015 -0700
# Node ID 82d6924ece5c04c4be8b7931da5697961cca346f
# Parent 26579a91f4fbceffd40595751613189a805109a6
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/__init__.py b/hgext/convert/__init__.py
--- a/hgext/convert/__init__.py
+++ b/hgext/convert/__init__.py
@@ -355,6 +355,14 @@ def convert(ui, src, dest=None, revmapfi
: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 --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
diff --git a/tests/test-convert.t b/tests/test-convert.t
--- a/tests/test-convert.t
+++ b/tests/test-convert.t
@@ -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
More information about the Mercurial-devel
mailing list