hgext3rd/evolve/firstmergecache.py
changeset 3968 37178a2d3557
parent 3504 5dc34b857114
child 3975 68d414cde579
equal deleted inserted replaced
3967:d54925819f34 3968:37178a2d3557
    45         def destroyed(self):
    45         def destroyed(self):
    46             if 'firstmergecach' in vars(self):
    46             if 'firstmergecach' in vars(self):
    47                 self.firstmergecache.clear()
    47                 self.firstmergecache.clear()
    48             super(firstmergecacherepo, self).destroyed()
    48             super(firstmergecacherepo, self).destroyed()
    49 
    49 
    50         if util.safehasattr(repo, 'updatecaches'):
    50         @localrepo.unfilteredmethod
    51             @localrepo.unfilteredmethod
    51         def updatecaches(self, tr=None, **kwargs):
    52             def updatecaches(self, tr=None, **kwargs):
    52             if utility.shouldwarmcache(self, tr):
    53                 if utility.shouldwarmcache(self, tr):
    53                 self.firstmergecache.update(self)
    54                     self.firstmergecache.update(self)
    54                 self.firstmergecache.save(self)
    55                     self.firstmergecache.save(self)
    55             super(firstmergecacherepo, self).updatecaches(tr, **kwargs)
    56                 super(firstmergecacherepo, self).updatecaches(tr, **kwargs)
       
    57 
       
    58         else:
       
    59             def transaction(self, *args, **kwargs):
       
    60                 tr = super(firstmergecacherepo, self).transaction(*args, **kwargs)
       
    61                 reporef = weakref.ref(self)
       
    62 
       
    63                 def _warmcache(tr):
       
    64                     repo = reporef()
       
    65                     if repo is None:
       
    66                         return
       
    67                     repo = repo.unfiltered()
       
    68                     repo.firstmergecache.update(repo)
       
    69                     repo.firstmergecache.save(repo)
       
    70 
       
    71                 if utility.shouldwarmcache(self, tr):
       
    72                     tr.addpostclose('warmcache-01-firstparentcache', _warmcache)
       
    73                 return tr
       
    74 
    56 
    75     repo.__class__ = firstmergecacherepo
    57     repo.__class__ = firstmergecacherepo
    76 
    58 
    77 class firstmergecache(genericcaches.changelogsourcebase):
    59 class firstmergecache(genericcaches.changelogsourcebase):
    78 
    60