diff -r 0388e3e36693 -r 54b198fe9768 mercurial/revset.py --- a/mercurial/revset.py Sat Mar 12 17:08:42 2011 +0100 +++ b/mercurial/revset.py Sat Mar 12 18:48:30 2011 +0100 @@ -6,7 +6,7 @@ # GNU General Public License version 2 or any later version. import re -import parser, util, error, discovery, help +import parser, util, error, discovery, help, hbisect import bookmarks as bookmarksmod import match as matchmod from i18n import _ @@ -683,12 +683,27 @@ for r in bookmarksmod.listbookmarks(repo).values()]) return [r for r in subset if r in bms] +def bisected(repo, subset, x): + """``bisected(string)`` + Changesets marked in the specified bisect state (good, bad, skip). + """ + state = getstring(x, _("bisect requires a string")).lower() + if state not in ('good', 'bad', 'skip', 'unknown'): + raise ParseError(_('invalid bisect state')) + marked = set(repo.changelog.rev(n) for n in hbisect.load_state(repo)[state]) + l = [] + for r in subset: + if r in marked: + l.append(r) + return l + symbols = { "adds": adds, "all": getall, "ancestor": ancestor, "ancestors": ancestors, "author": author, + "bisected": bisected, "bookmark": bookmark, "branch": branch, "children": children,