# HG changeset patch # User Alexis S. L. Carvalho # Date 1191550897 10800 # Node ID e710874247d139029b1b49792be330346d0ddb0d # Parent 6aba1835a7b36e947b3e6e2222c99c419fac8f0e convert: allow the converter_source to say "skip this revision" If getchanges returns a string, it's assumed to be the id of an already converted revision. We map the current revision to the same revision this converted revision was mapped to. To allow skipping a root revision, getchanges can return the special string 'hg-convert-skipped-revision' (a.k.a. common.SKIPREV), which hopefully won't clash with any real id. The converter_source is responsible for rewriting the parents of the commit objects to make sure the revision graph makes sense. diff --git a/hgext/convert/__init__.py b/hgext/convert/__init__.py --- a/hgext/convert/__init__.py +++ b/hgext/convert/__init__.py @@ -5,7 +5,7 @@ # This software may be used and distributed according to the terms # of the GNU General Public License, incorporated herein by reference. -from common import NoRepo, converter_source, converter_sink +from common import NoRepo, SKIPREV, converter_source, converter_sink from cvs import convert_cvs from darcs import darcs_source from git import convert_git @@ -202,7 +202,15 @@ class converter(object): do_copies = hasattr(self.dest, 'copyfile') filenames = [] - files, copies = self.source.getchanges(rev) + changes = self.source.getchanges(rev) + if isinstance(changes, basestring): + if changes == SKIPREV: + dest = SKIPREV + else: + dest = self.map[changes] + self.mapentry(rev, dest) + return + files, copies = changes parents = [self.map[r] for r in commit.parents] if commit.parents: prev = commit.parents[0] @@ -263,7 +271,7 @@ class converter(object): ctags = {} for k in tags: v = tags[k] - if v in self.map: + if self.map.get(v, SKIPREV) != SKIPREV: ctags[k] = self.map[v] if c and ctags: diff --git a/hgext/convert/common.py b/hgext/convert/common.py --- a/hgext/convert/common.py +++ b/hgext/convert/common.py @@ -17,6 +17,8 @@ def decodeargs(s): class NoRepo(Exception): pass +SKIPREV = 'hg-convert-skipped-revision' + class commit(object): def __init__(self, author, date, desc, parents, branch=None, rev=None): self.author = author