[PATCH 3 of 6] convert: svn source cannot return converted revision ancestors

Patrick Mezard pmezard at gmail.com
Tue Jan 1 17:03:13 CST 2008


# HG changeset patch
# User Patrick Mezard <pmezard at gmail.com>
# Date 1199228240 -3600
# Node ID 43e851a9485190fa79b2a6d668214058111d2ac6
# Parent  72f64b6d90a18ac753419eebf93b078a0f3fc625
convert: svn source cannot return converted revision ancestors

diff --git a/hgext/convert/subversion.py b/hgext/convert/subversion.py
--- a/hgext/convert/subversion.py
+++ b/hgext/convert/subversion.py
@@ -253,6 +253,10 @@ class svn_source(converter_source):
             self.module = module
             self.reparent(module)
             stop = self.lastrevs.get(module, 0)
+            if stop > revnum:
+                raise util.Abort(
+                    _("subversion source cannot return converted "
+                      "revisions ancestors: %s") % rev)
             self._fetch_revisions(from_revnum=revnum, to_revnum=stop)
         commit = self.commits[rev]
         # caller caches the result, so free it here to release memory
@@ -561,7 +565,10 @@ class svn_source(converter_source):
 
         return (entries, copies)
 
-    def _fetch_revisions(self, from_revnum = 0, to_revnum = 347):
+    def _fetch_revisions(self, from_revnum, to_revnum):
+        if from_revnum < to_revnum:
+            from_revnum, to_revnum = to_revnum, from_revnum
+
         self.child_cset = None
         def parselogentry(orig_paths, revnum, author, date, message):
             self.ui.debug("parsing revision %d (%d changes)\n" %
@@ -575,8 +582,8 @@ class svn_source(converter_source):
 
             rev = self.revid(revnum)
             # branch log might return entries for a parent we already have
-            if (rev in self.commits or
-                (revnum < self.lastrevs.get(self.module, 0))):
+
+            if (rev in self.commits or revnum < to_revnum):
                 return
 
             parents = []


More information about the Mercurial-devel mailing list