diff -r 9b6ae29d4801 -r 2502a15e033d mercurial/localrepo.py --- a/mercurial/localrepo.py Fri Jan 11 18:39:43 2013 +0100 +++ b/mercurial/localrepo.py Tue Jan 08 01:28:39 2013 +0100 @@ -1406,10 +1406,11 @@ # it, Otherwise, since nodes were destroyed, the cache is stale and this # will be caught the next time it is read. if newheadnodes: - ctxgen = (self[node] for node in newheadnodes - if self.changelog.hasnode(node)) + cl = self.changelog + revgen = (cl.rev(node) for node in newheadnodes + if cl.hasnode(node)) cache = self._branchcaches[None] - cache.update(self, ctxgen) + cache.update(self, revgen) cache.write(self) # Ensure the persistent tag cache is updated. Doing it now