# HG changeset patch # User Sean Farley # Date 1390426817 21600 # Node ID 9616b03113ce1441cd31d91f233220f72e1565a5 # Parent 5842d63cfe56b32a8d09ee78e028b64a51c5b4f6 convert: add tagmap logic Previously, there was no way to rewrite tags on the fly while converting. Now, we add similar logic to branchmap to provide a way to map old tags to new tags. Currently, this is not enabled since there is not yet a command-line option. diff -r 5842d63cfe56 -r 9616b03113ce hgext/convert/common.py --- a/hgext/convert/common.py Wed Jan 22 15:31:24 2014 -0600 +++ b/hgext/convert/common.py Wed Jan 22 15:40:17 2014 -0600 @@ -208,7 +208,8 @@ mapping equivalent authors identifiers for each system.""" return None - def putcommit(self, files, copies, parents, commit, source, revmap): + def putcommit(self, files, copies, parents, commit, source, + revmap, tagmap): """Create a revision with all changed files listed in 'files' and having listed parents. 'commit' is a commit object containing at a minimum the author, date, and message for this diff -r 5842d63cfe56 -r 9616b03113ce hgext/convert/convcmd.py --- a/hgext/convert/convcmd.py Wed Jan 22 15:31:24 2014 -0600 +++ b/hgext/convert/convcmd.py Wed Jan 22 15:40:17 2014 -0600 @@ -121,6 +121,7 @@ self.splicemap = self.parsesplicemap(opts.get('splicemap')) self.branchmap = mapfile(ui, opts.get('branchmap')) self.closemap = self.parseclosemap(opts.get('closemap')) + self.tagmap = mapfile(ui, opts.get('tagmap')) def parseclosemap(self, path): """ check and validate the closemap format and @@ -448,7 +449,7 @@ commit.extra['close'] = 1 newnode = self.dest.putcommit(files, copies, parents, commit, - source, self.map) + source, self.map, self.tagmap) source.close() self.source.converted(rev, newnode) self.map[rev] = newnode @@ -484,6 +485,9 @@ self.ui.progress(_('converting'), None) tags = self.source.gettags() + tags = dict((self.tagmap.get(k, k), v) + for k, v in tags.iteritems()) + ctags = {} for k in tags: v = tags[k] diff -r 5842d63cfe56 -r 9616b03113ce hgext/convert/hg.py --- a/hgext/convert/hg.py Wed Jan 22 15:31:24 2014 -0600 +++ b/hgext/convert/hg.py Wed Jan 22 15:40:17 2014 -0600 @@ -120,7 +120,7 @@ self.repo.pull(prepo, [prepo.lookup(h) for h in heads]) self.before() - def _rewritetags(self, source, revmap, data): + def _rewritetags(self, source, revmap, tagmap, data): fp = cStringIO.StringIO() for line in data.splitlines(): s = line.split(' ', 1) @@ -129,17 +129,18 @@ revid = revmap.get(source.lookuprev(s[0])) if not revid: continue - fp.write('%s %s\n' % (revid, s[1])) + fp.write('%s %s\n' % (revid, tagmap.get(s[1], s[1]))) return fp.getvalue() - def putcommit(self, files, copies, parents, commit, source, revmap): + def putcommit(self, files, copies, parents, commit, source, + revmap, tagmap): files = dict(files) def getfilectx(repo, memctx, f): v = files[f] data, mode = source.getfile(f, v) if f == '.hgtags': - data = self._rewritetags(source, revmap, data) + data = self._rewritetags(source, revmap, tagmap, data) return context.memfilectx(f, data, 'l' in mode, 'x' in mode, copies.get(f)) diff -r 5842d63cfe56 -r 9616b03113ce hgext/convert/subversion.py --- a/hgext/convert/subversion.py Wed Jan 22 15:31:24 2014 -0600 +++ b/hgext/convert/subversion.py Wed Jan 22 15:40:17 2014 -0600 @@ -1183,7 +1183,8 @@ def revid(self, rev): return u"svn:%s@%s" % (self.uuid, rev) - def putcommit(self, files, copies, parents, commit, source, revmap): + def putcommit(self, files, copies, parents, commit, source, + revmap, tagmap): for parent in parents: try: return self.revid(self.childmap[parent])