changeset 46042:1bf2b44c4007

log: do not accept string-matcher pattern as -u/-b/-B parameter I'm pretty sure this is a bug introduced after we've switched the filtering backend to revset matcher.
author Yuya Nishihara <yuya@tcha.org>
date Tue, 01 Dec 2020 20:22:24 +0900
parents 9c0db3671008
children 024f90fc01b5
files mercurial/logcmdutil.py mercurial/scmutil.py tests/test-glog-beautifygraph.t tests/test-glog.t tests/test-log-bookmark.t tests/test-log.t
diffstat 6 files changed, 37 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/logcmdutil.py	Tue Dec 01 19:32:36 2020 +0900
+++ b/mercurial/logcmdutil.py	Tue Dec 01 20:22:24 2020 +0900
@@ -898,13 +898,13 @@
 def _makerevset(repo, wopts, slowpath):
     """Return a revset string built from log options and file patterns"""
     opts = {
-        b'branch': [repo.lookupbranch(b) for b in wopts.branches],
+        b'branch': [b'literal:' + repo.lookupbranch(b) for b in wopts.branches],
         b'date': wopts.date,
         b'keyword': wopts.keywords,
         b'no_merges': wopts.no_merges,
         b'only_merges': wopts.only_merges,
         b'prune': wopts.prune_ancestors,
-        b'user': wopts.users,
+        b'user': [b'literal:' + v for v in wopts.users],
     }
 
     if wopts.filter_revisions_by_pats and slowpath:
--- a/mercurial/scmutil.py	Tue Dec 01 19:32:36 2020 +0900
+++ b/mercurial/scmutil.py	Tue Dec 01 20:22:24 2020 +0900
@@ -2310,6 +2310,7 @@
 def format_bookmark_revspec(mark):
     """Build a revset expression to select revisions reachable by a given
     bookmark"""
+    mark = b'literal:' + mark
     return revsetlang.formatspec(
         b"ancestors(bookmark(%s)) - "
         b"ancestors(head() and not bookmark(%s)) - "
--- a/tests/test-glog-beautifygraph.t	Tue Dec 01 19:32:36 2020 +0900
+++ b/tests/test-glog-beautifygraph.t	Tue Dec 01 20:22:24 2020 +0900
@@ -1588,19 +1588,19 @@
     (list
       (func
         (symbol 'user')
-        (string 'test'))
+        (string 'literal:test'))
       (func
         (symbol 'user')
-        (string 'not-a-user'))))
+        (string 'literal:not-a-user'))))
   <filteredset
     <spanset- 0:37>,
     <addset
       <filteredset
         <fullreposet+ 0:37>,
-        <user 'test'>>,
+        <user 'literal:test'>>,
       <filteredset
         <fullreposet+ 0:37>,
-        <user 'not-a-user'>>>>
+        <user 'literal:not-a-user'>>>>
   $ testlog -b not-a-branch
   abort: unknown revision 'not-a-branch'
   abort: unknown revision 'not-a-branch'
@@ -1611,28 +1611,28 @@
     (list
       (func
         (symbol 'branch')
-        (string 'default'))
+        (string 'literal:default'))
       (or
         (list
           (func
             (symbol 'branch')
-            (string 'branch'))
+            (string 'literal:branch'))
           (func
             (symbol 'branch')
-            (string 'branch'))))))
+            (string 'literal:branch'))))))
   <filteredset
     <spanset- 0:37>,
     <addset
       <filteredset
         <fullreposet+ 0:37>,
-        <branch 'default'>>,
+        <branch 'literal:default'>>,
       <addset
         <filteredset
           <fullreposet+ 0:37>,
-          <branch 'branch'>>,
+          <branch 'literal:branch'>>,
         <filteredset
           <fullreposet+ 0:37>,
-          <branch 'branch'>>>>>
+          <branch 'literal:branch'>>>>>
   $ testlog -k expand -k merge
   []
   (or
--- a/tests/test-glog.t	Tue Dec 01 19:32:36 2020 +0900
+++ b/tests/test-glog.t	Tue Dec 01 20:22:24 2020 +0900
@@ -1438,19 +1438,19 @@
     (list
       (func
         (symbol 'user')
-        (string 'test'))
+        (string 'literal:test'))
       (func
         (symbol 'user')
-        (string 'not-a-user'))))
+        (string 'literal:not-a-user'))))
   <filteredset
     <spanset- 0:37>,
     <addset
       <filteredset
         <fullreposet+ 0:37>,
-        <user 'test'>>,
+        <user 'literal:test'>>,
       <filteredset
         <fullreposet+ 0:37>,
-        <user 'not-a-user'>>>>
+        <user 'literal:not-a-user'>>>>
   $ testlog -b not-a-branch
   abort: unknown revision 'not-a-branch'
   abort: unknown revision 'not-a-branch'
@@ -1461,28 +1461,28 @@
     (list
       (func
         (symbol 'branch')
-        (string 'default'))
+        (string 'literal:default'))
       (or
         (list
           (func
             (symbol 'branch')
-            (string 'branch'))
+            (string 'literal:branch'))
           (func
             (symbol 'branch')
-            (string 'branch'))))))
+            (string 'literal:branch'))))))
   <filteredset
     <spanset- 0:37>,
     <addset
       <filteredset
         <fullreposet+ 0:37>,
-        <branch 'default'>>,
+        <branch 'literal:default'>>,
       <addset
         <filteredset
           <fullreposet+ 0:37>,
-          <branch 'branch'>>,
+          <branch 'literal:branch'>>,
         <filteredset
           <fullreposet+ 0:37>,
-          <branch 'branch'>>>>>
+          <branch 'literal:branch'>>>>>
   $ testlog -k expand -k merge
   []
   (or
--- a/tests/test-log-bookmark.t	Tue Dec 01 19:32:36 2020 +0900
+++ b/tests/test-log-bookmark.t	Tue Dec 01 20:22:24 2020 +0900
@@ -190,3 +190,9 @@
   $ hg log -B unknown
   abort: bookmark 'unknown' does not exist
   [255]
+
+Shouldn't accept string-matcher syntax:
+
+  $ hg log -B 're:.*'
+  abort: bookmark 're:.*' does not exist
+  [255]
--- a/tests/test-log.t	Tue Dec 01 19:32:36 2020 +0900
+++ b/tests/test-log.t	Tue Dec 01 20:22:24 2020 +0900
@@ -1378,6 +1378,14 @@
   1 k1
   0 k0
 
+ log -b/-u/-k shouldn't accept string-matcher syntax:
+
+  $ hg log -b 're:.*'
+  abort: unknown revision 're:.*'
+  [255]
+  $ hg log -k 're:.*'
+  $ hg log -u 're:.*'
+
  log FILE in ascending order, against dagrange:
 
   $ hg log -r1:: -T '{rev} {files}\n' f1 f2