Show More
@@ -258,7 +258,7 b' class svn_source(converter_source):' | |||||
258 | self.module = module |
|
258 | self.module = module | |
259 | self.reparent(module) |
|
259 | self.reparent(module) | |
260 | stop = self.lastrevs.get(module, 0) |
|
260 | stop = self.lastrevs.get(module, 0) | |
261 |
self._fetch_revisions( |
|
261 | self._fetch_revisions(revnum, stop) | |
262 | commit = self.commits[rev] |
|
262 | commit = self.commits[rev] | |
263 | # caller caches the result, so free it here to release memory |
|
263 | # caller caches the result, so free it here to release memory | |
264 | del self.commits[rev] |
|
264 | del self.commits[rev] | |
@@ -571,7 +571,10 b' class svn_source(converter_source):' | |||||
571 |
|
571 | |||
572 | return (entries, copies) |
|
572 | return (entries, copies) | |
573 |
|
573 | |||
574 |
def _fetch_revisions(self, from_revnum |
|
574 | def _fetch_revisions(self, from_revnum, to_revnum): | |
|
575 | if from_revnum < to_revnum: | |||
|
576 | from_revnum, to_revnum = to_revnum, from_revnum | |||
|
577 | ||||
575 | self.child_cset = None |
|
578 | self.child_cset = None | |
576 | def parselogentry(orig_paths, revnum, author, date, message): |
|
579 | def parselogentry(orig_paths, revnum, author, date, message): | |
577 | self.ui.debug("parsing revision %d (%d changes)\n" % |
|
580 | self.ui.debug("parsing revision %d (%d changes)\n" % | |
@@ -585,9 +588,9 b' class svn_source(converter_source):' | |||||
585 |
|
588 | |||
586 | rev = self.revid(revnum) |
|
589 | rev = self.revid(revnum) | |
587 | # branch log might return entries for a parent we already have |
|
590 | # branch log might return entries for a parent we already have | |
588 | if (rev in self.commits or |
|
591 | ||
589 | (revnum < self.lastrevs.get(self.module, 0))): |
|
592 | if (rev in self.commits or revnum < to_revnum): | |
590 | return |
|
593 | return None | |
591 |
|
594 | |||
592 | parents = [] |
|
595 | parents = [] | |
593 | # check whether this revision is the start of a branch |
|
596 | # check whether this revision is the start of a branch | |
@@ -642,20 +645,36 b' class svn_source(converter_source):' | |||||
642 | if self.child_cset and not self.child_cset.parents: |
|
645 | if self.child_cset and not self.child_cset.parents: | |
643 | self.child_cset.parents = [rev] |
|
646 | self.child_cset.parents = [rev] | |
644 | self.child_cset = cset |
|
647 | self.child_cset = cset | |
|
648 | return cset | |||
645 |
|
649 | |||
646 | self.ui.note('fetching revision log for "%s" from %d to %d\n' % |
|
650 | self.ui.note('fetching revision log for "%s" from %d to %d\n' % | |
647 | (self.module, from_revnum, to_revnum)) |
|
651 | (self.module, from_revnum, to_revnum)) | |
648 |
|
652 | |||
649 | try: |
|
653 | try: | |
|
654 | firstcset = None | |||
650 | for entry in self.get_log([self.module], from_revnum, to_revnum): |
|
655 | for entry in self.get_log([self.module], from_revnum, to_revnum): | |
651 |
|
|
656 | paths, revnum, author, date, message = entry | |
652 | if self.is_blacklisted(revnum): |
|
657 | if self.is_blacklisted(revnum): | |
653 | self.ui.note('skipping blacklisted revision %d\n' % revnum) |
|
658 | self.ui.note('skipping blacklisted revision %d\n' % revnum) | |
654 | continue |
|
659 | continue | |
655 |
if |
|
660 | if paths is None: | |
656 | self.ui.debug('revision %d has no entries\n' % revnum) |
|
661 | self.ui.debug('revision %d has no entries\n' % revnum) | |
657 | continue |
|
662 | continue | |
658 |
parselogentry( |
|
663 | cset = parselogentry(paths, revnum, author, date, message) | |
|
664 | if cset: | |||
|
665 | firstcset = cset | |||
|
666 | ||||
|
667 | if firstcset and not firstcset.parents: | |||
|
668 | # The first revision of the sequence (the last fetched one) | |||
|
669 | # has invalid parents if not a branch root. Find the parent | |||
|
670 | # revision now, if any. | |||
|
671 | try: | |||
|
672 | firstrevnum = self.revnum(firstcset.rev) | |||
|
673 | if firstrevnum > 1: | |||
|
674 | latest = self.latest(self.module, firstrevnum - 1) | |||
|
675 | firstcset.parents.append(self.revid(latest)) | |||
|
676 | except util.Abort: | |||
|
677 | pass | |||
659 | except SubversionException, (inst, num): |
|
678 | except SubversionException, (inst, num): | |
660 | if num == svn.core.SVN_ERR_FS_NO_SUCH_REVISION: |
|
679 | if num == svn.core.SVN_ERR_FS_NO_SUCH_REVISION: | |
661 | raise NoSuchRevision(branch=self, |
|
680 | raise NoSuchRevision(branch=self, |
General Comments 0
You need to be logged in to leave comments.
Login now