453 svn.ra.get_log(self.ra, [self.module], from_revnum, to_revnum, 0, |
455 svn.ra.get_log(self.ra, [self.module], from_revnum, to_revnum, 0, |
454 discover_changed_paths, strict_node_history, |
456 discover_changed_paths, strict_node_history, |
455 receivelog) |
457 receivelog) |
456 for entry in received: |
458 for entry in received: |
457 parselogentry(*entry) |
459 parselogentry(*entry) |
458 self.last_revnum = to_revnum |
|
459 except SubversionException, (_, num): |
460 except SubversionException, (_, num): |
460 if num == svn.core.SVN_ERR_FS_NO_SUCH_REVISION: |
461 if num == svn.core.SVN_ERR_FS_NO_SUCH_REVISION: |
461 raise NoSuchRevision(branch=self, |
462 raise NoSuchRevision(branch=self, |
462 revision="Revision number %d" % to_revnum) |
463 revision="Revision number %d" % to_revnum) |
463 raise |
464 raise |
|
465 |
|
466 def setrevmap(self, revmap): |
|
467 lastrevs = {} |
|
468 for revid in revmap.keys(): |
|
469 uuid, module, revnum = self.revsplit(revid) |
|
470 lastrevnum = lastrevs.setdefault(module, revnum) |
|
471 if revnum > lastrevnum: |
|
472 lastrevs[module] = revnum |
|
473 self.lastrevs = lastrevs |
464 |
474 |
465 def getheads(self): |
475 def getheads(self): |
466 # detect standard /branches, /tags, /trunk layout |
476 # detect standard /branches, /tags, /trunk layout |
467 optrev = svn.core.svn_opt_revision_t() |
477 optrev = svn.core.svn_opt_revision_t() |
468 optrev.kind = svn.core.svn_opt_revision_number |
478 optrev.kind = svn.core.svn_opt_revision_number |
530 def getcommit(self, rev): |
540 def getcommit(self, rev): |
531 if rev not in self.commits: |
541 if rev not in self.commits: |
532 uuid, module, revnum = self.revsplit(rev) |
542 uuid, module, revnum = self.revsplit(rev) |
533 self.module = module |
543 self.module = module |
534 self.reparent(module) |
544 self.reparent(module) |
535 self._fetch_revisions(from_revnum=revnum, to_revnum=0) |
545 stop = self.lastrevs.get(module, 0) |
|
546 self._fetch_revisions(from_revnum=revnum, to_revnum=stop) |
536 return self.commits[rev] |
547 return self.commits[rev] |
537 |
548 |
538 def gettags(self): |
549 def gettags(self): |
539 tags = {} |
550 tags = {} |
540 def parselogentry(*arg, **args): |
551 def parselogentry(*arg, **args): |