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
Derrick Stolee <stolee@gmail.com>
Date
Dec 18, 2019, 10:55 UTC
Message-ID
<d8e753ec-2835-331f-99de-35a4a5369b48@gmail.com>
In-Reply-To
<147443E8-EA04-45D2-B3BC-D879A5FFECDC@gmail.com>
On 12/17/2019 10:28 PM, Philippe Blain wrote:
Show 6 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.  
...
>     git log -L 300,2000000085:Documentation/git-log.txt 
> errors out:
>     fatal: file Documentation/git-log.txt has only 239 lines
This case seems important enough to include what it means to "match".
Specifically, the range must match at least one line in the file.
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.

Negative numbers in the ranges are a bit strange to include, and the large magnitude you include here seems unnecessary for the test. However, it appears that we do store signed values in the line-log machinery:

/* A range [start,end].  Lines are numbered starting at 0, and the
 * ranges include start but exclude end. */
struct range {
	long start, end;
};

Perhaps these should be replaced with an unsigned value instead, just to be clear that negative values do not make sense in this context?

Or rather, do we want to enforce start < end if they are to be valuable? We apparently do assert() this in range_set_check_invariants() for all that does.

The current behavior of showing only the first line is a strange byproduct of allowing these odd ranges, but we may want to keep it for consistency. That would imply we allow start <= end, and auto-correct these negative values to have end = start. (This does not fix the 300,-1 case, but that is strange enough to be considered a bug, right?)

Thanks, -Stolee

Previous: Philippe BlainNext: SZEDER Gábor
Message 11 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.