mercurial/logcmdutil.py
changeset 46041 9c0db3671008
parent 45942 89a2afe31e82
child 46042 1bf2b44c4007
equal deleted inserted replaced
46040:9ee791f3278f 46041:9c0db3671008
   689     # a list of revset expressions to be traversed; if follow, it specifies
   689     # a list of revset expressions to be traversed; if follow, it specifies
   690     # the start revisions
   690     # the start revisions
   691     revspec = attr.ib()  # type: List[bytes]
   691     revspec = attr.ib()  # type: List[bytes]
   692 
   692 
   693     # miscellaneous queries to filter revisions (see "hg help log" for details)
   693     # miscellaneous queries to filter revisions (see "hg help log" for details)
       
   694     bookmarks = attr.ib(default=attr.Factory(list))  # type: List[bytes]
   694     branches = attr.ib(default=attr.Factory(list))  # type: List[bytes]
   695     branches = attr.ib(default=attr.Factory(list))  # type: List[bytes]
   695     date = attr.ib(default=None)  # type: Optional[bytes]
   696     date = attr.ib(default=None)  # type: Optional[bytes]
   696     keywords = attr.ib(default=attr.Factory(list))  # type: List[bytes]
   697     keywords = attr.ib(default=attr.Factory(list))  # type: List[bytes]
   697     no_merges = attr.ib(default=False)  # type: bool
   698     no_merges = attr.ib(default=False)  # type: bool
   698     only_merges = attr.ib(default=False)  # type: bool
   699     only_merges = attr.ib(default=False)  # type: bool
   744 
   745 
   745     return walkopts(
   746     return walkopts(
   746         pats=pats,
   747         pats=pats,
   747         opts=opts,
   748         opts=opts,
   748         revspec=opts.get(b'rev', []),
   749         revspec=opts.get(b'rev', []),
       
   750         bookmarks=opts.get(b'bookmark', []),
   749         # branch and only_branch are really aliases and must be handled at
   751         # branch and only_branch are really aliases and must be handled at
   750         # the same time
   752         # the same time
   751         branches=opts.get(b'branch', []) + opts.get(b'only_branch', []),
   753         branches=opts.get(b'branch', []) + opts.get(b'only_branch', []),
   752         date=opts.get(b'date'),
   754         date=opts.get(b'date'),
   753         keywords=opts.get(b'keyword', []),
   755         keywords=opts.get(b'keyword', []),
   935         else:
   937         else:
   936             if revop:
   938             if revop:
   937                 val = [revsetlang.formatspec(revop, v) for v in val]
   939                 val = [revsetlang.formatspec(revop, v) for v in val]
   938             expr.append(revsetlang.formatspec(listop, val))
   940             expr.append(revsetlang.formatspec(listop, val))
   939 
   941 
       
   942     if wopts.bookmarks:
       
   943         expr.append(
       
   944             revsetlang.formatspec(
       
   945                 b'%lr',
       
   946                 [scmutil.format_bookmark_revspec(v) for v in wopts.bookmarks],
       
   947             )
       
   948         )
       
   949 
   940     if expr:
   950     if expr:
   941         expr = b'(' + b' and '.join(expr) + b')'
   951         expr = b'(' + b' and '.join(expr) + b')'
   942     else:
   952     else:
   943         expr = None
   953         expr = None
   944     return expr
   954     return expr
  1018     revs, filematcher = makewalker(repo, wopts)
  1028     revs, filematcher = makewalker(repo, wopts)
  1019     if not revs:
  1029     if not revs:
  1020         return revs, None
  1030         return revs, None
  1021     differ = changesetdiffer()
  1031     differ = changesetdiffer()
  1022     differ._makefilematcher = filematcher
  1032     differ._makefilematcher = filematcher
  1023     return revs, differ
       
  1024 
       
  1025 
       
  1026 def get_bookmark_revs(repo, bookmark, walk_opts):
       
  1027     # type: (Any, bookmark, walk_opts) -> Tuple[smartset.abstractsmartset, Optional[changesetdiffer]]
       
  1028     """Return (revs, differ) where revs is a smartset
       
  1029 
       
  1030     differ is a changesetdiffer with pre-configured file matcher.
       
  1031     """
       
  1032     revs, filematcher = makewalker(repo, walk_opts)
       
  1033     if not revs:
       
  1034         return revs, None
       
  1035     differ = changesetdiffer()
       
  1036     differ._makefilematcher = filematcher
       
  1037 
       
  1038     if bookmark:
       
  1039         if bookmark not in repo._bookmarks:
       
  1040             raise error.Abort(_(b"bookmark '%s' not found") % bookmark)
       
  1041         revs = scmutil.bookmarkrevs(repo, bookmark)
       
  1042 
       
  1043     return revs, differ
  1033     return revs, differ
  1044 
  1034 
  1045 
  1035 
  1046 def _parselinerangeopt(repo, opts):
  1036 def _parselinerangeopt(repo, opts):
  1047     """Parse --line-range log option and return a list of tuples (filename,
  1037     """Parse --line-range log option and return a list of tuples (filename,