Mercurial > public > mercurial-scm > hg
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(): |