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

Re: diff --check is stupid about blank lines

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 20, 2008, 18:42 UTC
Message-ID
<7vskszr0it.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<7v7iabsgfk.fsf@gitster.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> writes:
Show 21 quoted lines
> Jeff King <peff@peff.net> writes:
>
>> ... The problem seems to be the conditional at
>> diff.c:1622:
>>
>>         if ((data.ws_rule & WS_TRAILING_SPACE) &&
>>             data.trailing_blanks_start) {
>>                 fprintf(o->file, "%s:%d: ends with blank lines.\n",
>>                         data.filename, data.trailing_blanks_start);
>>                 data.status = 1; /* report errors */
>>         }
>>
>> that should probably be "if we care about trailing space, and the last
>> thing we saw was a trailing blank, _and_ the last hunk adds to
>> end-of-file, then...".
>
> Instead, data.trailing_blanks_start is supposed to be reset to 0 every
> time we see non-blank newline, a copied context line, or new hunk.
>
> So if this triggers with -U0 I'd understand, but otherwise I do not see
> how.

Ahhh, what idiot wrote the logic for checking trailing blank lines in checkdiff_consume().

It does not ask for any context lines.  Sheesh.
This should fix it.
diff --git i/diff.c w/diff.c
index 10d5440..5923fe2 100644
--- i/diff.c
+++ w/diff.c
@@ -1628,6 +1628,7 @@ static void builtin_checkdiff(const char *name_a, const char *name_b,
 		xdemitcb_t ecb;
 
 		memset(&xecfg, 0, sizeof(xecfg));
+		xecfg.ctxlen = 1; /* at least one context line */
 		xpp.flags = XDF_NEED_MINIMAL;
 		xdi_diff_outf(&mf1, &mf2, checkdiff_consume, &data,
 			      &xpp, &xecfg, &ecb);
Previous: Junio C HamanoNext: Björn Steinbrink
Message 4 of 7 in “diff --check is stupid about blank lines”
  1. Björn SteinbrinkAug 20, 2008
  2. Jeff KingAug 20, 2008
  3. Junio C HamanoAug 20, 2008
  4. Junio C HamanoAug 20, 2008
  5. Björn SteinbrinkAug 20, 2008
  6. Jeff KingAug 20, 2008
  7. Junio C HamanoAug 20, 2008

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.