Mercurial > public > mercurial-scm > hg-stable
diff mercurial/bookmarks.py @ 18984:efef056b1ae9
obsolete: extract foreground computation from bookmark.validdest
This foreground logic will be reused by update logic.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Tue, 16 Apr 2013 15:16:33 +0200 |
parents | a60963c02f92 |
children | 741d94aa92e4 |
line wrap: on
line diff
--- a/mercurial/bookmarks.py Mon Apr 15 17:10:58 2013 +0200 +++ b/mercurial/bookmarks.py Tue Apr 16 15:16:33 2013 +0200 @@ -292,19 +292,7 @@ # (new != nullrev has been excluded by the previous check) return True elif repo.obsstore: - # We only need this complicated logic if there is obsolescence - # XXX will probably deserve an optimised revset. - nm = repo.changelog.nodemap - validdests = set([old]) - plen = -1 - # compute the whole set of successors or descendants - while len(validdests) != plen: - plen = len(validdests) - succs = set(c.node() for c in validdests) - mutable = [c.node() for c in validdests if c.mutable()] - succs.update(obsolete.allsuccessors(repo.obsstore, mutable)) - known = (n for n in succs if n in nm) - validdests = set(repo.set('%ln::', known)) - return new in validdests + return new.node() in obsolete.foreground(repo, [old.node()]) else: + # still an independant clause as it is lazyer (and therefore faster) return old.descendant(new)