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

Re: [PATCH] git-add--interactive.perl: Permit word-based diff

From
Thomas Rast <trast@inf.ethz.ch>
Date
Jun 18, 2013, 07:22 UTC
Message-ID
<87k3lrzxw7.fsf@hexa.v.cablecom.net>
In-Reply-To
<20130618063144.GA6276@sigill.intra.peff.net>

[I don't seem to have received a copy of the original mail, so I can only guess...]

Jeff King <peff@peff.net> writes:
Show 18 quoted lines
> On Sat, Jun 15, 2013 at 04:01:04PM +0200, Mark Abraham wrote:
>
>> Controlled by new configuration option
>> "color.word-diff-in-interactive-add". There is no existing support for
>> "git add" to pass a command-line option like "--word-diff=color" to
>> git-add--interactive.perl, so a configuration option is the only
>> lightweight solution.
>> 
>> With this feature, the added or deleted form of a hunk can be empty,
>> so made some necessary checks for $_ being defined.
>
> Hmm. We can't apply a word-diff, so presumably your "permit" here is
> just for the display, replacing the colorized bits. And that looks like
> what your patch does.
>
> Note that the number of lines in your --word-diff=color hunk and the
> actual diff will not necessarily be the same.  What happens if I split a
> hunk with your patch?

If it's actually what you hint at, there's another problem: the word diff might not even have the same number of hunks. For example, a long-standing bug (or feature, depending on POV) of word-diff is that it does not take opportunities to completely drop hunks that did not make any word-level changes.

Consider this:
  diff --git a/foo b/foo
  index 5eaddaa..089eeac 100644
  --- a/foo
  +++ b/foo
  @@ -1,2 +1,2 @@
  -foo bar                                                                                               
  -baz                                                                                                   
  +foo                                                                                                   
  +bar baz
In word-diff mode that's
  diff --git a/foo b/foo                                                                                 
  index 5eaddaa..089eeac 100644                                                                          
  --- a/foo                                                                                              
  +++ b/foo                                                                                              
  @@ -1,2 +1,2 @@                                                                                        
  foo                                                                                                    
  bar baz

Arguably word-diff should be fixed to drop the hunk. But if 'add -p' depends on exact hunk correspondence, it will break.

-- 
Thomas Rast
trast@{inf,student}.ethz.ch
Previous: Jeff KingNext: Jeff King
Message 2 of 5 in “Re: [PATCH] git-add--interactive.perl: Permit word-based diff”
  1. Jeff KingJun 18, 2013
  2. Thomas RastJun 18, 2013
  3. Jeff KingJun 18, 2013
  4. Mark AbrahamJun 18, 2013
  5. Jeff KingJun 18, 2013

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.