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

Re: Potential bug in --color-words output

From
Stefan Beller <stefanbeller@gmail.com>
Date
Nov 7, 2022, 23:23 UTC
Message-ID
<CALbm-EagU-kDg5wDO2z1canSifq0fo+hOqf8Xz1gAzbUO4COrQ@mail.gmail.com>
In-Reply-To
<198be0ca-4768-d3ce-caf3-bce4b1bb1e49@gmail.com>
Hi,
in my copy of git there is:

---- git % git grep --line-number --no-color color-words

Documentation/RelNotes/1.5.4.txt:377: * "git diff --color-words" colored context lines in a wrong color.

Documentation/RelNotes/1.6.2.txt:100:* The definition of what constitutes a word for "git diff --color-words"

Documentation/RelNotes/1.6.5.3.txt:23: * "git diff --color-words -U0" didn't work correctly.

Documentation/RelNotes/1.7.2.txt:64: * "git diff --word-diff=<mode>" extends the existing "--color-words"

Documentation/RelNotes/1.7.2.txt:141: * "git diff --graph" works better with "--color-words" and other options

Documentation/diff-options.txt:475:--color-words[=<regex>]::

contrib/completion/git-completion.bash:1718: --no-color --color-words --no-renames --check

contrib/diff-highlight/README:9:You can use "--color-words" to highlight only the changed portions of

diff.c:1914: * '--color-words' algorithm can be described as:

diff.c:1929: * For '--graph' to work with '--color-words', we need to output the graph prefix

diff.c:2138:/* In "color-words" mode, show word-diff of words accumulated in the buffer */

diff.c:5566:            OPT_CALLBACK_F(0, "color-words", options, N_("<regex>"),
gitk-git/gitk:207:            "--color-words*" - "--word-diff=color" {
t/t4034-diff-words.sh:70:               word_diff --color-words
t/t4034-diff-words.sh:100:      word_diff --color-words &&
t/t4034-diff-words.sh:180:      word_diff --color-words --unified=0
t/t4034-diff-words.sh:185:      word_diff --color-words="[a-z]+"
t/t4034-diff-words.sh:190:      word_diff --color-words="[a-z${LF}]*"
t/t4034-diff-words.sh:203:      word_diff --color-words="[a-z]+"
t/t4034-diff-words.sh:208:      word_diff --color-words
t/t4034-diff-words.sh:217:      word_diff --color-words="[a-z]+"
t/t4034-diff-words.sh:240:      word_diff --color-words
t/t4034-diff-words.sh:262:      word_diff --color-words
t/t4034-diff-words.sh:278:      word_diff --color-words="a+"

t/t4034-diff-words.sh:294: word_diff --color-words=. ----

So there are tests in t/t4034-diff-words.sh and probably around diff.c:1914- diff.c:2138

Best, Stefan

Am Mo., 7. Nov. 2022 um 12:43 Uhr schrieb Simeon Krastnikov <skrastnikov@gmail.com>:

Show 40 quoted lines
>
> Hi Junio, Phillip, and Stefan,
>
> I apologize for forwarding this to you personally, but based on the recent commit history, I figured that you would be the right persons to ask about this.
>
> Sorry again, if you consider this to be spam.
>
> Best,
>
> Simeon
>
>
>
> -------- Forwarded Message --------
> Subject: Potential bug in --color-words output
> Date: Fri, 28 Oct 2022 23:08:09 +0200
> From: Simeon Krastnikov <skrastnikov@gmail.com>
> To: git@vger.kernel.org
>
>
> Hello,
>
> Given an initial file with the contents "not to be", which I then change to "to be", the output of 'git diff --color-words', is
>
>   notto be
>
> with the first three letters colored red. To me this seems incorrect as it implies, or at least misleadingly suggests, that there was no space between "not" and "to" in the original file. (Even though in that case the output is actually "nottoto be" with the "notto" in red and "to" in green.)
>
> If instead I start with a file with contents "to be", which I then change to "not to be", then the output is as expected:
>
>   not to be
>
> (First three letters colored green.)
>
> Am I correct in seeing this as a bug? If so, any tips on what parts of diff.c to look at when starting a patch?
>
> Thanks,
>
> Simeon
>
Previous: Johannes Schindelin
Message 4 of 4 in “Potential bug in --color-words output”
  1. Simeon KrastnikovOct 28, 2022
  2. Johannes SixtNov 8, 2022
  3. Johannes SchindelinNov 10, 2022
  4. Stefan BellerNov 7, 2022

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.