diff -r 9ee791f3278f -r 9c0db3671008 mercurial/logcmdutil.py --- a/mercurial/logcmdutil.py Tue Dec 01 19:23:23 2020 +0900 +++ b/mercurial/logcmdutil.py Tue Dec 01 19:32:36 2020 +0900 @@ -691,6 +691,7 @@ revspec = attr.ib() # type: List[bytes] # miscellaneous queries to filter revisions (see "hg help log" for details) + bookmarks = attr.ib(default=attr.Factory(list)) # type: List[bytes] branches = attr.ib(default=attr.Factory(list)) # type: List[bytes] date = attr.ib(default=None) # type: Optional[bytes] keywords = attr.ib(default=attr.Factory(list)) # type: List[bytes] @@ -746,6 +747,7 @@ pats=pats, opts=opts, revspec=opts.get(b'rev', []), + bookmarks=opts.get(b'bookmark', []), # branch and only_branch are really aliases and must be handled at # the same time branches=opts.get(b'branch', []) + opts.get(b'only_branch', []), @@ -937,6 +939,14 @@ val = [revsetlang.formatspec(revop, v) for v in val] expr.append(revsetlang.formatspec(listop, val)) + if wopts.bookmarks: + expr.append( + revsetlang.formatspec( + b'%lr', + [scmutil.format_bookmark_revspec(v) for v in wopts.bookmarks], + ) + ) + if expr: expr = b'(' + b' and '.join(expr) + b')' else: @@ -1023,26 +1033,6 @@ return revs, differ -def get_bookmark_revs(repo, bookmark, walk_opts): - # type: (Any, bookmark, walk_opts) -> Tuple[smartset.abstractsmartset, Optional[changesetdiffer]] - """Return (revs, differ) where revs is a smartset - - differ is a changesetdiffer with pre-configured file matcher. - """ - revs, filematcher = makewalker(repo, walk_opts) - if not revs: - return revs, None - differ = changesetdiffer() - differ._makefilematcher = filematcher - - if bookmark: - if bookmark not in repo._bookmarks: - raise error.Abort(_(b"bookmark '%s' not found") % bookmark) - revs = scmutil.bookmarkrevs(repo, bookmark) - - return revs, differ - - def _parselinerangeopt(repo, opts): """Parse --line-range log option and return a list of tuples (filename, (fromline, toline)).