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

Re: [PATCH 2/2] Documentation/git-log: mention that line-log regex must match in starting revision

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Dec 18, 2019, 11:09 UTC
Message-ID
<20191218110929.GB8609@szeder.dev>
In-Reply-To
<147443E8-EA04-45D2-B3BC-D879A5FFECDC@gmail.com>
On Tue, Dec 17, 2019 at 10:28:37PM -0500, Philippe Blain wrote:
Show 7 quoted lines
> 
> > Le 17 déc. 2019 à 13:16, Junio C Hamano <gitster@pobox.com> a écrit :
> > Even when you specify <start> or <end> as a line number, they must
> > exist in the starting revision or it would be a fatal error.  If we
> > are clarifying with this patch for completeness, I think we should
> > also mention it together.  
> Thanks for the feedback. I did some tests : 
I'll swap the order of your first two tests:
>     git log -L 300,2000000085:Documentation/git-log.txt 
> errors out:
>     fatal: file Documentation/git-log.txt has only 239 lines

Here the entire line range is outside of the file, so there is not much we can do about it, but error out.

An alternative would be to treat it as an empty line range and then don't show any commits but exit silently, but I think that would be confusing ("why didn't I get any output?!"), and telling the user what's wrong is better ("Ah, ok, I mistyped 192 as 912").

>     git log -L 73,2000000085:Documentation/git-log.txt
> does not error and shows the history from line 73 to the end of the file.

Here there is an overlap between the given line range and the file (lines 73-239), so we have two possibilities:

  - be strict and error out saying that the <end> doesn't make sense.
  - be lax about it, and interpret the <end> as the end of file.  This
    allows for cases like "I want line log from here to the end of
    file, but instead of finding out the exact number of lines in the
    file I'll just say 999999 that is surely larger than the file, and
    you shall do what I mean".

Those who implemented the line-log feature chose the latter. I think it's the better choice.

Show 5 quoted lines
> But 
>     git log -L 300,-2000000085:Documentation/git-log.txt
> does not error out and shows the history for the whole file. Also,
>     git log -L 1,-2000000085:Documentation/git-log.txt
> does not error out and gives the history for the first line.

These are a variant of the previous case, with the difference that because of the '-' in <end> it is not an absolute line number but relative, and is interpreted as that many lines before <start> (i.e. in this case <start> actually means the end of the line range).

I think the same argument can be made about <end> pointing past the beginning of the file, though, arguably, it's not as useful, because the first line as always 1, and '-L 123,-99999' is more keystrokes than '-L 1,123'.

> So I think that it’s really only regex that must match...
Previous: Philippe BlainNext: Philippe Blain via GitGitGadget
Message 15 of 18 in “Improve line log documentation”
  1. 0/2 Improve line log documentationPhilippe Blain via GitGitGadget, Dec 17, 2019
  2. 1/2 Documentation/git-log: document accepted line-log diff formatsPhilippe Blain via GitGitGadget, Dec 17, 2019
  3. SZEDER GáborDec 17, 2019
  4. Philippe BlainDec 18, 2019
  5. Derrick StoleeDec 17, 2019
  6. Philippe BlainDec 18, 2019
  7. 2/2 Documentation/git-log: mention that line-log regex must match in starting revisionPhilippe Blain via GitGitGadget, Dec 17, 2019
  8. Derrick StoleeDec 17, 2019
  9. Junio C HamanoDec 17, 2019
  10. Philippe BlainDec 18, 2019
  11. Derrick StoleeDec 18, 2019
  12. SZEDER GáborDec 18, 2019
  13. Junio C HamanoDec 18, 2019
  14. Philippe BlainDec 26, 2019
  15. SZEDER GáborDec 18, 2019
  16. 0/2 Improve line log documentationPhilippe Blain via GitGitGadget, Dec 26, 2019
  17. 1/2 doc: log, gitk: document accepted line-log diff formatsPhilippe Blain via GitGitGadget, Dec 26, 2019
  18. 2/2 doc: log, gitk: line-log arguments must exist in starting revisionPhilippe Blain via GitGitGadget, Dec 26, 2019

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.