diff --git a/hgext/convert/common.py b/hgext/convert/common.py --- a/hgext/convert/common.py +++ b/hgext/convert/common.py @@ -260,6 +260,11 @@ class converter_sink(object): """ pass + def hascommitfrommap(self, rev): + """Return False if a rev mentioned in a filemap is known to not be + present.""" + raise NotImplementedError + def hascommitforsplicemap(self, rev): """This method is for the special needs for splicemap handling and not for general use. Returns True if the sink contains rev, aborts on some diff --git a/hgext/convert/hg.py b/hgext/convert/hg.py --- a/hgext/convert/hg.py +++ b/hgext/convert/hg.py @@ -253,6 +253,10 @@ class mercurial_sink(converter_sink): destmarks[bookmark] = bin(updatedbookmark[bookmark]) destmarks.write() + def hascommitfrommap(self, rev): + # the exact semantics of clonebranches is unclear so we can't say no + return rev in self.repo or self.clonebranches + def hascommitforsplicemap(self, rev): if rev not in self.repo and self.clonebranches: raise util.Abort(_('revision %s not found in destination ' diff --git a/hgext/convert/subversion.py b/hgext/convert/subversion.py --- a/hgext/convert/subversion.py +++ b/hgext/convert/subversion.py @@ -1300,6 +1300,11 @@ class svn_sink(converter_sink, commandli self.ui.warn(_('writing Subversion tags is not yet implemented\n')) return None, None + def hascommitfrommap(self, rev): + # We trust that revisions referenced in a map still is present + # TODO: implement something better if necessary and feasible + return True + def hascommitforsplicemap(self, rev): # This is not correct as one can convert to an existing subversion # repository and childmap would not list all revisions. Too bad.