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 |