Subject: bug#18076: closed (Re: [bug-diffutils] bug#18076: Lines are not ignored by option -I if they are followed by a line with a difference)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 22 Jul 2014 17:00:08 +0000

Your bug report

#18076: Lines are not ignored by option -I if they are followed by a line with a difference

which was filed against the diffutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
18076: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18076
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug-diffutils] bug#18076: Lines are not ignored by option -I if they are followed by a line with a difference
From: Eric Blake <[email-masked]>
To: Jean-Francois Thuong <[email-masked]>, [email-masked]
Date: Tue, 22 Jul 2014 10:58:58 -0600
List-Id: <debbugs-submit.debbugs.gnu.org>

tag 18076 notabug
thanks

On 07/22/2014 12:59 AM, Jean-Francois Thuong wrote:

> To reproduce:
> 1. Create 2 files (e.g. File1.txt and File2.txt) having 2 consecutive
> different lines (e.g. lines 2 and 3)
> 2. Run diff with option -I including a pattern matching line 2
> 3. Observe that diff returns differences for both lines 2 and 3

Thanks for the report.  However, this is not a bug, but documented
behavior.  -I only suppresses entire hunks where EVERY difference in the
hunk matches the regex.

The mode of operation you are requesting, where diff ignores lines that
match the regex prior to doing the comparison (although line numbers are
then a bit off), can be accomplished via this trick in bash:

patt='^IGNORE:'
diff <(sed "/$patt/d" File1.txt) <(sed "/$patt/d" File2.txt)

Maybe it's worth a new option to diff to allow this mode of operation by
default (and so that line numbers are still accurate); but -I cannot be
changed semantics to match that new option.

I'm closing this report as we are matching our documentation, although
we can reopen it if someone is interested in writing a patch for such a
new option.

> *The information transmitted is intended only for the person or entity to

Sorry, but such disclaimers are unenforceable on publicly-archived
mailing lists.  You may want to consider sending from a personal account
in the future, rather than slamming the list with your employer's
legalese spam.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Subject: Lines are not ignored by option -I if they are followed by a line with a difference
From: Jean-Francois Thuong <[email-masked]>
To: [email-masked]
Date: Tue, 22 Jul 2014 14:59:43 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Package: diffutils
Version: 3.3

When 2 (or more) consecutive lines are different between the two compared
files, they are ignored by option -I if all of them are ignored; if the
last line is not ignored, all the lines are returned by diff tool (instead
of only the last line).

Although the documentation clearly indicates this as nominal, it looks
strange while looking at the results to have lines that we supposed to have
been ignored.

------------------
To reproduce:
1. Create 2 files (e.g. File1.txt and File2.txt) having 2 consecutive
different lines (e.g. lines 2 and 3)
2. Run diff with option -I including a pattern matching line 2
3. Observe that diff returns differences for both lines 2 and 3

Note: the files attached could be used as an example with the command line
diff -I "^IGNORE:.*quot; File1.txt File2.txt
The difference is as follows:
2,3c2,3
< IGNORE: Line to be ignored with value = 1
< Different line (version A)
---
> IGNORE: Line to be ignored with value = 2
> Different line (version B)

Jean-Francois Thuong
------------------------------
[signature removed by request]