Mercurial > hg
comparison mercurial/repoview.py @ 24154:a41902aac76d stable
repoview: invalidate cached changelog if _delayed changes (issue4549)
Starting with 2d54aa5397cd, when a clone reached the checkout stage,
the cached changelog in the filtered view was still seeing the
_delayed flag, even though the changelog had already been finalized.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 01 Mar 2015 23:20:02 -0600 |
parents | ab3b8d8fd2a0 |
children | 2f7cb6e6acdd |
comparison
equal
deleted
inserted
replaced
24153:f7401f816cc9 | 24154:a41902aac76d |
---|---|
272 # some cache may be implemented later | 272 # some cache may be implemented later |
273 unfi = self._unfilteredrepo | 273 unfi = self._unfilteredrepo |
274 unfichangelog = unfi.changelog | 274 unfichangelog = unfi.changelog |
275 revs = filterrevs(unfi, self.filtername) | 275 revs = filterrevs(unfi, self.filtername) |
276 cl = self._clcache | 276 cl = self._clcache |
277 newkey = (len(unfichangelog), unfichangelog.tip(), hash(revs)) | 277 newkey = (len(unfichangelog), unfichangelog.tip(), hash(revs), |
278 unfichangelog._delayed) | |
278 if cl is not None: | 279 if cl is not None: |
279 # we need to check curkey too for some obscure reason. | 280 # we need to check curkey too for some obscure reason. |
280 # MQ test show a corruption of the underlying repo (in _clcache) | 281 # MQ test show a corruption of the underlying repo (in _clcache) |
281 # without change in the cachekey. | 282 # without change in the cachekey. |
282 oldfilter = cl.filteredrevs | 283 oldfilter = cl.filteredrevs |
283 try: | 284 try: |
284 cl.filteredrevs = () # disable filtering for tip | 285 cl.filteredrevs = () # disable filtering for tip |
285 curkey = (len(cl), cl.tip(), hash(oldfilter)) | 286 curkey = (len(cl), cl.tip(), hash(oldfilter), cl._delayed) |
286 finally: | 287 finally: |
287 cl.filteredrevs = oldfilter | 288 cl.filteredrevs = oldfilter |
288 if newkey != self._clcachekey or newkey != curkey: | 289 if newkey != self._clcachekey or newkey != curkey: |
289 cl = None | 290 cl = None |
290 # could have been made None by the previous if | 291 # could have been made None by the previous if |