comparison mercurial/localrepo.py @ 27698:dad6404ccddb

bmstore: add handling of the active bookmark This further centralizes the handling of bookmark storage, and will help get some lingering bookmarks business out of localrepo. Right now, this change implies reading of the active bookmark to also imply reading all bookmarks from disk - for users with many many bookmarks this may be a measurable performance hit. In that case, we should migrate bmstore to be able to lazy-read its properties from disk rather than having to eagerly read them, but I decided to avoid doing that to try and avoid some potentially complicated filecache decorator issues. This doesn't move the logic for writing the active bookmark into a transaction, though that is probably the correct next step. Since the API probably needs to morph a little more, I didn't bother marking bookmarks.{activate,deactivate} as deprecated yet.
author Augie Fackler <augie@google.com>
date Wed, 11 Nov 2015 21:18:02 -0500
parents 798535853345
children 63821023ea79
comparison
equal deleted inserted replaced
27697:0ce0cfee497f 27698:dad6404ccddb
457 # (possibly subclass of the repo) 457 # (possibly subclass of the repo)
458 class proxycls(repoview.repoview, self.unfiltered().__class__): 458 class proxycls(repoview.repoview, self.unfiltered().__class__):
459 pass 459 pass
460 return proxycls(self, name) 460 return proxycls(self, name)
461 461
462 @repofilecache('bookmarks') 462 @repofilecache('bookmarks', 'bookmarks.current')
463 def _bookmarks(self): 463 def _bookmarks(self):
464 return bookmarks.bmstore(self) 464 return bookmarks.bmstore(self)
465 465
466 @repofilecache('bookmarks.current') 466 @property
467 def _activebookmark(self): 467 def _activebookmark(self):
468 return bookmarks.readactive(self) 468 return self._bookmarks.active
469 469
470 def bookmarkheads(self, bookmark): 470 def bookmarkheads(self, bookmark):
471 name = bookmark.split('@', 1)[0] 471 name = bookmark.split('@', 1)[0]
472 heads = [] 472 heads = []
473 for mark, n in self._bookmarks.iteritems(): 473 for mark, n in self._bookmarks.iteritems():