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

Re: [PATCH 2/2] Highlight keywords in remote sideband output.

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 1, 2018, 15:41 UTC
Message-ID
<xmqqeffi856n.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<CAPig+cSbibJ7i8LwJqPe06xJObnq6dJdMUnJoC1uAg4zUQq3KA@mail.gmail.com>
Eric Sunshine <sunshine@sunshineco.com> writes:
Show 7 quoted lines
> On Tue, Jul 31, 2018 at 1:37 PM Han-Wen Nienhuys <hanwen@google.com> wrote:
>> Highlight keywords in remote sideband output.
>
> Prefix with the module you're touching, don't capitalize, and drop the
> period. Perhaps:
>
>     sideband: highlight keywords in remote sideband output
Yup (I locally did something similar when queued it).
Show 8 quoted lines
>> The highlighting is done on the client-side. Supported keywords are
>> "error", "warning", "hint" and "success".
>>
>> The colorization is controlled with the config setting "color.remote".
>
> What's the motivation for this change? The commit message should say
> something about that and give an explanation of why this is done
> client-side rather than server-side.
Good suggestion.
Show 15 quoted lines
>
>> Co-authored-by: Duy Nguyen <pclouds@gmail.com>
>
> Helped-by: is more typical.
>
>> Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
>> ---
>> diff --git a/Documentation/config.txt b/Documentation/config.txt
>> @@ -1229,6 +1229,15 @@ color.push::
>> +color.remote::
>> +       A boolean to enable/disable colored remote output. If unset,
>> +       then the value of `color.ui` is used (`auto` by default).
>
> If this is "boolean", what does "auto" mean? Perhaps update the
> description to better match other color-related options.

Existing `color.branch` is already loose in the same way, but others like color.{diff,grep,interactive} read better. No, past mistakes by others is not a good excuse to make things worse, but I'd say it also is OK to clean this up, together with `color.branch`, after this change on top.

Show 7 quoted lines
>> +               if (!strncasecmp(p->keyword, src, len) && !isalnum(src[len])) {
>
> So, the strncasecmp() is checking if one of the recognized keywords is
> at the 'src' position, and the !isalnum() ensures that you won't pick
> up something of which the keyword is merely a prefix. For instance,
> you won't mistakenly highlight "successful". It also works correctly
> when 'len' happens to reference the end-of-string NUL. Okay.

Hmm, do we actually say things like "Error: blah"? I am not sure if I like this strncasecmp all that much.

Show 13 quoted lines
>> +                       strbuf_addstr(dest, p->color);
>> +                       strbuf_add(dest, src, len);
>> +                       strbuf_addstr(dest, GIT_COLOR_RESET);
>> +                       n -= len;
>> +                       src += len;
>> +                       break;
>> +               }
>
> So, despite the explanation in the commit message, this function isn't
> _generally_ highlighting keywords in the sideband. Instead, it is
> highlighting a keyword only if it finds it at the start of string
> (ignoring whitespace). Perhaps the commit message could be more clear
> about that.
Sounds good.

I didn't comment on other parts of your review posed as questions (that require some digging and thinking), but I think they are all worthwhile thing to think about.

Thanks.
Previous: Eric SunshineNext: Han-Wen Nienhuys
Message 7 of 15 in “Highlight keywords in remote sideband output.”
  1. 0/2 Highlight keywords in remote sideband output.Han-Wen Nienhuys, Jul 31, 2018
  2. 1/2 Document git config getter return value.Han-Wen Nienhuys, Jul 31, 2018
  3. Eric SunshineAug 1, 2018
  4. 2/2 Highlight keywords in remote sideband output.Han-Wen Nienhuys, Jul 31, 2018
  5. Junio C HamanoJul 31, 2018
  6. Eric SunshineJul 31, 2018
  7. Junio C HamanoAug 1, 2018
  8. Han-Wen NienhuysAug 1, 2018
  9. Junio C HamanoAug 1, 2018
  10. Han-Wen NienhuysAug 2, 2018
  11. Eric SunshineAug 2, 2018
  12. Han-Wen NienhuysAug 2, 2018
  13. Eric SunshineAug 2, 2018
  14. Stefan BellerAug 2, 2018
  15. Han-Wen NienhuysAug 2, 2018

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.