bookmarks: fix _bookmarks/lookup() reentrancy issue (issue2016)
_bookmarks is loaded lazily and calls super.lookup(). Unfortunately, branch and
tags caches initializations also recurse in lookup() and end up trying to
access _bookmarks again. Massive confusion ensues.
I considered fixing all branches and tags cache loading to avoid recursing in
lookup() but it would add complexity to otherwise working code provided lookups
are performed on nodes or revnums.
% add file
adding qqq.txt
% commit first revision
% set bookmark
% commit second revision
% set bookmark
% update to -2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% commit new head
created new head
% bookmarks updated?
test 1:16b24da7e457
test2 1:16b24da7e457
% strip to revision 1
saved backup bundle to
% list bookmarks
* test 1:9f1b7e78eff8
* test2 1:9f1b7e78eff8
% test immediate rollback and reentrancy issue
adding a
adding b
rolling back to revision 0 (undo commit)
no bookmarks set
* markb 0:07f494440405