Mercurial > hg > mercurial-crew-with-dirclash
comparison hgext/convert/subversion.py @ 4812:1fcdf2fe3d7c
convert: svn: use revmap to parse only new revisions in incremental conversions
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Thu, 05 Jul 2007 12:41:58 -0700 |
parents | f7c8222920ee |
children | 744371157212 |
comparison
equal
deleted
inserted
replaced
4811:a5209b0487e0 | 4812:1fcdf2fe3d7c |
---|---|
85 msg = 'subversion python bindings could not be loaded\n' | 85 msg = 'subversion python bindings could not be loaded\n' |
86 ui.warn(msg) | 86 ui.warn(msg) |
87 raise NoRepo(msg) | 87 raise NoRepo(msg) |
88 | 88 |
89 self.encoding = locale.getpreferredencoding() | 89 self.encoding = locale.getpreferredencoding() |
90 self.lastrevs = {} | |
91 | |
90 latest = None | 92 latest = None |
91 if rev: | 93 if rev: |
92 try: | 94 try: |
93 latest = int(rev) | 95 latest = int(rev) |
94 except ValueError: | 96 except ValueError: |
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): |