From: Johannes Altmanninger <aclopte@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, "Michał Kępień" <michal@isc.org>
Subject: Re: git diff -I<regex> does not work with empty +/- lines
Date: Mon, 29 Nov 2021 05:54:22 +0100 [thread overview]
Message-ID: <20211129045422.fyowpxfabmyahaov@gmail.com> (raw)
In-Reply-To: <xmqqtufv50bx.fsf@gitster.g>
On Sun, Nov 28, 2021 at 03:26:10PM -0800, Junio C Hamano wrote:
> Johannes Altmanninger <aclopte@gmail.com> writes:
>
> > diff -I<regex> suppresses hunks where all +/- lines match <regex>.
> > it is useful to filter away boilerplate changes.
> >
> > Unfortunately, it doesn't help if a hunk has a blank line, because the one
> > obvious way to filter out blank lines (^$) match *every* line, surprisingly.
> > This is because for a line "01\n"
> > we have a zero-width match here ^$ (offset 3).
> >
> > IOW, while we succesfully ignore deleted blank lines
> >
> > printf '\n' | git diff --no-index - /dev/null -I'^$'
> > diff --git a/- b/-
> > deleted file mode 100644
> >
> > we also ignore non-blank lines (very surprising)
> >
> > printf 'non-blank-line\n' | git diff --no-index - /dev/null -I'^$'
> > diff --git a/- b/-
> > deleted file mode 100644
> >
> > unless they don't end in a newline (special case)
> >
> > printf 'line without ending newline' | git diff --no-index - /dev/null -I'^$'
> > diff --git a/- b/-
> > deleted file mode 100644
> > --- a/-
> > +++ /dev/null
> > @@ -1 +0,0 @@
> > -line without ending newline
> > \ No newline at end of file
> >
> > This patch fixes the second example. Is this the right direction?
>
> I do not know where in the code the breakage in the first example
> comes from. It sounds like a bug if a pattern is not matched
> honoring the anchor, whether the beginning-of-line "^" or the
> end-of-line "$" one.
THe first example (printf '\n' | ... -I'^$') works fine AFAICT.
The regex matches the empty line, so the hunk is ignored
(but the file header is still printed).
Only the second example (printf 'non-blank-line\n' | ... -I'^$')
shows that we ignore too much, because ^$ (incorrectly) matches,
but it should only match blank lines.
Thanks
prev parent reply other threads:[~2021-11-29 4:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-28 9:15 git diff -I<regex> does not work with empty +/- lines Johannes Altmanninger
2021-11-28 23:26 ` Junio C Hamano
2021-11-29 4:54 ` Johannes Altmanninger [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211129045422.fyowpxfabmyahaov@gmail.com \
--to=aclopte@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=michal@isc.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).