632 |
632 |
633 (crude version, rewrite everything all the time) |
633 (crude version, rewrite everything all the time) |
634 """ |
634 """ |
635 if self._cachekey is None or self._cachekey == self._ondiskkey: |
635 if self._cachekey is None or self._cachekey == self._ondiskkey: |
636 return |
636 return |
637 cachevfs = compat.getcachevfs(repo) |
637 try: |
638 cachefile = cachevfs(self._filepath, 'w', atomictemp=True) |
638 cachevfs = compat.getcachevfs(repo) |
639 |
639 cachefile = cachevfs(self._filepath, 'w', atomictemp=True) |
640 # data to write |
640 |
641 headerdata = self._serializecachekey() |
641 # data to write |
642 indexdata = self._index.tostring() |
642 headerdata = self._serializecachekey() |
643 data = self._data.tostring() |
643 indexdata = self._index.tostring() |
644 indexsize = S_INDEXSIZE.pack(len(indexdata)) |
644 data = self._data.tostring() |
645 |
645 indexsize = S_INDEXSIZE.pack(len(indexdata)) |
646 # writing |
646 |
647 cachefile.write(headerdata) |
647 # writing |
648 cachefile.write(indexsize) |
648 cachefile.write(headerdata) |
649 cachefile.write(indexdata) |
649 cachefile.write(indexsize) |
650 cachefile.write(data) |
650 cachefile.write(indexdata) |
651 cachefile.close() |
651 cachefile.write(data) |
|
652 cachefile.close() |
|
653 except (IOError, OSError) as exc: |
|
654 repo.ui.debug('stablesortcache: could not write update %s\n' % exc) |
652 |
655 |
653 @eh.reposetup |
656 @eh.reposetup |
654 def setupcache(ui, repo): |
657 def setupcache(ui, repo): |
655 |
658 |
656 class stablesortrepo(repo.__class__): |
659 class stablesortrepo(repo.__class__): |