hgext/convert/subversion.py
changeset 4774 d305852a5ec8
parent 4773 cfbce076f2de
child 4775 739fd34f5d66
equal deleted inserted replaced
4773:cfbce076f2de 4774:d305852a5ec8
   129 
   129 
   130         self.head = self.rev(self.last_changed)
   130         self.head = self.rev(self.last_changed)
   131 
   131 
   132     def rev(self, revnum):
   132     def rev(self, revnum):
   133         return (u"svn:%s%s@%s" % (self.uuid, self.module, revnum)).decode(self.encoding)
   133         return (u"svn:%s%s@%s" % (self.uuid, self.module, revnum)).decode(self.encoding)
       
   134 
       
   135     def revnum(self, rev):
       
   136         return int(rev.split('@')[-1])
   134             
   137             
   135     def get_blacklist(self):
   138     def get_blacklist(self):
   136         """Avoid certain revision numbers.
   139         """Avoid certain revision numbers.
   137         It is not uncommon for two nearby revisions to cancel each other
   140         It is not uncommon for two nearby revisions to cancel each other
   138         out, e.g. 'I copied trunk into a subdirectory of itself instead
   141         out, e.g. 'I copied trunk into a subdirectory of itself instead
   426     def _getfile(self, file, rev):
   429     def _getfile(self, file, rev):
   427         io = StringIO()
   430         io = StringIO()
   428         # TODO: ra.get_file transmits the whole file instead of diffs.
   431         # TODO: ra.get_file transmits the whole file instead of diffs.
   429         mode = ''
   432         mode = ''
   430         try:
   433         try:
   431             revnum = int(rev.split("@")[-1])
   434             revnum = self.revnum(rev)
   432             if self.module != self.modulemap[revnum]:
   435             if self.module != self.modulemap[revnum]:
   433                 self.module = self.modulemap[revnum]
   436                 self.module = self.modulemap[revnum]
   434                 self.reparent(self.module)
   437                 self.reparent(self.module)
   435             info = svn.ra.get_file(self.ra, file, revnum, io)
   438             info = svn.ra.get_file(self.ra, file, revnum, io)
   436             if isinstance(info, list):
   439             if isinstance(info, list):
   465         cl.sort()
   468         cl.sort()
   466         return cl
   469         return cl
   467 
   470 
   468     def getcommit(self, rev):
   471     def getcommit(self, rev):
   469         if rev not in self.commits:
   472         if rev not in self.commits:
   470             revnum = int(rev.split('@')[-1])
   473             revnum = self.revnum(rev)
   471             minrev = revnum - LOG_BATCH_SIZE > 0 and revnum - LOG_BATCH_SIZE or 0
   474             minrev = revnum - LOG_BATCH_SIZE > 0 and revnum - LOG_BATCH_SIZE or 0
   472             self._fetch_revisions(from_revnum=revnum, to_revnum=minrev)
   475             self._fetch_revisions(from_revnum=revnum, to_revnum=minrev)
   473         return self.commits[rev]
   476         return self.commits[rev]
   474 
   477 
   475     def gettags(self):
   478     def gettags(self):