git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Bug: git log -L manpage claims regexes are supported, but they are not

From
DDaniel <daniel@heath.cc>
Date
Dec 4, 2020, 02:47 UTC
Message-ID
<147444de-7653-d067-596a-9448ae6b8cac@heath.cc>
Context:
   $ git version
git version 2.25.1
   $ git log -L ^/bootstrap-sass/,+2 Gemfile
fatal: -L argument not 'start,end:file' or ':funcname:file': 
^/bootstrap-sass/,+2

I expected the above to work, based on the contents of `git help log`, which describes the regex format.

This regex format works correctly in `git blame -L`, and it appears the manpage was copied across but not the implementation.

$ git help log
        -L <start>,<end>:<file>, -L :<funcname>:<file>
            Trace the evolution of the line range given by 
"<start>,<end>" (or the function name regex <funcname>) within the 
<file>. You may not give any pathspec limiters. This is
            currently limited to a walk starting from a single revision, 
i.e., you may only give zero or one positive revision arguments, and 
<start> and <end> (or <funcname>) must
            exist in the starting revision. You can specify this option 
more than once. Implies --patch. Patch output can be suppressed using 
--no-patch, but other diff formats (namely
            --raw, --numstat, --shortstat, --dirstat, --summary, 
--name-only, --name-status, --check) are not currently implemented.
            <start> and <end> can take one of these forms:
            •   number
                If <start> or <end> is a number, it specifies an 
absolute line number (lines count from 1).
            •   /regex/
                This form will use the first line matching the given 
POSIX regex. If <start> is a regex, it will search from the end of the 
previous -L range, if any, otherwise from the
                start of file. If <start> is “^/regex/”, it will search 
from the start of file. If <end> is a regex, it will search starting at 
the line given by <start>.
            •   +offset or -offset
                This is only valid for <end> and will specify a number 
of lines before or after the line given by <start>.
            If “:<funcname>” is given in place of <start> and <end>, it 
is a regular expression that denotes the range from the first funcname 
line that matches <funcname>, up to the
            next funcname line. “:<funcname>” searches from the end of 
the previous -L range, if any, otherwise from the start of file. 
“^:<funcname>” searches from the start of file.
Next: Eric Sunshine
Message 1 of 3 in “Bug: git log -L manpage claims regexes are supported, but they are not”
  1. DanielDec 4, 2020
  2. Eric SunshineDec 4, 2020
  3. Daniel HeathDec 4, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.