##// END OF EJS Templates
convert: refactor subversion getchanges and caching
Mads Kiilerich -
r22298:4ba35d42 default
parent child Browse files
Show More
@@ -347,7 +347,7 b' class svn_source(converter_source):'
347 347 % self.module)
348 348 self.last_changed = self.revnum(self.head)
349 349
350 self._changescache = None
350 self._changescache = (None, None)
351 351
352 352 if os.path.exists(os.path.join(url, '.svn/entries')):
353 353 self.wc = url
@@ -444,10 +444,7 b' class svn_source(converter_source):'
444 444
445 445 return self.heads
446 446
447 def getchanges(self, rev):
448 if self._changescache and self._changescache[0] == rev:
449 return self._changescache[1]
450 self._changescache = None
447 def _getchanges(self, rev):
451 448 (paths, parents) = self.paths[rev]
452 449 if parents:
453 450 files, self.removed, copies = self.expandpaths(rev, paths, parents)
@@ -463,15 +460,23 b' class svn_source(converter_source):'
463 460
464 461 files.sort()
465 462 files = zip(files, [rev] * len(files))
463 return (files, copies)
466 464
465 def getchanges(self, rev):
466 # reuse cache from getchangedfiles
467 if self._changescache[0] == rev:
468 (files, copies) = self._changescache[1]
469 else:
470 (files, copies) = self._getchanges(rev)
467 471 # caller caches the result, so free it here to release memory
468 472 del self.paths[rev]
469 473 return (files, copies)
470 474
471 475 def getchangedfiles(self, rev, i):
472 changes = self.getchanges(rev)
473 self._changescache = (rev, changes)
474 return [f[0] for f in changes[0]]
476 # called from filemap - cache computed values for reuse in getchanges
477 (files, copies) = self._getchanges(rev)
478 self._changescache = (rev, (files, copies))
479 return [f[0] for f in files]
475 480
476 481 def getcommit(self, rev):
477 482 if rev not in self.commits:
General Comments 0
You need to be logged in to leave comments. Login now