# Regression in 'git add -p' with 'interactive.diffFilter' since builtin version is default

3 messages from 2022-08-22 to 2022-08-23. Participants: Philippe Blain, Johannes Schindelin.
Thread: https://gitlist.dev/t/58348

## Philippe Blain, 2022-08-22 22:15

Subject: Regression in 'git add -p' with 'interactive.diffFilter' since builtin version is default
Message-ID: <ecf6f5be-22ca-299f-a8f1-bda38e5ca246@gmail.com>
URL: https://gitlist.dev/e/ecf6f5be-22ca-299f-a8f1-bda38e5ca246%40gmail.com

```
Hi Dscho,

I found a regression in the builtin 'add -i'. I use diff-so-fancy [1]
as a pager and also use it via 'interactive.diffFilter'. With the 
builtin implementation, this errors with:

    error: could not parse colored hunk header '?[36m?[1m?[38;5;13m@ file:1 @?[1m?[0m'

With the Perl version, it works fine.

This has been reported in the 'diff-so-fancy' project here: [2].

Here is a reproducer:

~~~bash
#!/bin/bash

set -euEo pipefail

repo=repro
rm -rf $repo

TEST_AUTHOR_LOCALNAME=author
TEST_AUTHOR_DOMAIN=example.com
GIT_AUTHOR_EMAIL=${TEST_AUTHOR_LOCALNAME}@${TEST_AUTHOR_DOMAIN}
GIT_AUTHOR_NAME='A U Thor'
GIT_AUTHOR_DATE='1112354055 +0200'
TEST_COMMITTER_LOCALNAME=committer
TEST_COMMITTER_DOMAIN=example.com
GIT_COMMITTER_EMAIL=${TEST_COMMITTER_LOCALNAME}@${TEST_COMMITTER_DOMAIN}
GIT_COMMITTER_NAME='C O Mitter'
GIT_COMMITTER_DATE='1112354055 +0200'
export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME
export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
export GIT_COMMITTER_DATE GIT_AUTHOR_DATE
export HOME=

git -c init.defaultBranch=unimportant init $repo
cd $repo
date>file
git add file
git commit -m file
git clone https://github.com/so-fancy/diff-so-fancy.git
date>>file
export PATH="diff-so-fancy:$PATH"
git -c interactive.diffFilter="diff-so-fancy --patch" -c add.interactive.useBuiltin=false add -p < <(echo y)
date>>file
git -c interactive.diffFilter="diff-so-fancy --patch" add -p
~~~

Cheers,

Philippe.

[1] https://github.com/so-fancy/diff-so-fancy
[2] https://github.com/so-fancy/diff-so-fancy/issues/437

```

## Johannes Schindelin, 2022-08-23 13:08

Subject: Re: Regression in 'git add -p' with 'interactive.diffFilter' since builtin version is default
Message-ID: <s40ss309-3311-o08s-38r2-9144r33pq549@tzk.qr>
URL: https://gitlist.dev/e/s40ss309-3311-o08s-38r2-9144r33pq549%40tzk.qr
In-Reply-To: <ecf6f5be-22ca-299f-a8f1-bda38e5ca246@gmail.com>

```
Hi Philippe,

On Mon, 22 Aug 2022, Philippe Blain wrote:

> I found a regression in the builtin 'add -i'. I use diff-so-fancy [1]
> as a pager and also use it via 'interactive.diffFilter'. With the
> builtin implementation, this errors with:
>
>     error: could not parse colored hunk header '?[36m?[1m?[38;5;13m@ file:1 @?[1m?[0m'
>
> With the Perl version, it works fine.

Hmm. This looks different than what Peff reported in
https://lore.kernel.org/git/20201112184026.GB701197@coredump.intra.peff.net/,
where the command errored out with:

	  $ git -c interactive.difffilter='diff-so-fancy' add -p
	  fatal: mismatched output from interactive.diffFilter
	  hint: Your filter must maintain a one-to-one correspondence
	  hint: between its input and output lines.

I _think_ I have an idea how to address this. Stay tuned.

Ciao,
Dscho

```

## Johannes Schindelin, 2022-08-23 18:38

Subject: Re: Regression in 'git add -p' with 'interactive.diffFilter' since builtin version is default
Message-ID: <2qpp7417-79qr-364s-3798-r471sp6ron54@tzk.qr>
URL: https://gitlist.dev/e/2qpp7417-79qr-364s-3798-r471sp6ron54%40tzk.qr
In-Reply-To: <s40ss309-3311-o08s-38r2-9144r33pq549@tzk.qr>

```
Hi Philippe,

On Tue, 23 Aug 2022, Johannes Schindelin wrote:

> Hi Philippe,
>
> On Mon, 22 Aug 2022, Philippe Blain wrote:
>
> > I found a regression in the builtin 'add -i'. I use diff-so-fancy [1]
> > as a pager and also use it via 'interactive.diffFilter'. With the
> > builtin implementation, this errors with:
> >
> >     error: could not parse colored hunk header '?[36m?[1m?[38;5;13m@ file:1 @?[1m?[0m'
> >
> > With the Perl version, it works fine.
>
> Hmm. This looks different than what Peff reported in
> https://lore.kernel.org/git/20201112184026.GB701197@coredump.intra.peff.net/,
> where the command errored out with:
>
> 	  $ git -c interactive.difffilter='diff-so-fancy' add -p
> 	  fatal: mismatched output from interactive.diffFilter
> 	  hint: Your filter must maintain a one-to-one correspondence
> 	  hint: between its input and output lines.
>
> I _think_ I have an idea how to address this. Stay tuned.

Seems that the Git mailing list is taking a mental health care day... it
took a while for the quoted reply to show up, and while I submitted
https://github.com/gitgitgadget/git/pull/1336 half an hour ago, it also
has yet to arrive...

Ciao,
Dscho

```
