git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Brian Ericson <bme@visi.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org
Subject: Re: teach git diff -v/--invert-match?
Date: Fri, 22 Aug 2008 16:29:31 -0500	[thread overview]
Message-ID: <48AF2FBB.2080401@visi.com> (raw)
In-Reply-To: <20080822193947.GA31322@coredump.intra.peff.net>

I was just working on a reply to my own email as I realized it was only 
dumb-luck that
converted 1200 noisy changes into a couple of dozen.  "-S" matches only 
the string
itself, not the line the string resides on.  So, -Sxyz will match if 
"xyz" itself was
added or deleted in the diff (if "xyz" is on a line that's changed but 
did not itself change,
it won't match).  Funny that I actually knew this -- I use it to look for
System.out.println additions among other things.

Interestingly, if I wanted to know if an import changed (on top of 
knowing if imports were
added or deleted), eg:
-import foo;
+import bar;

I couldn't tell you how to do it.  The string "import" didn't change.  
I'd've guessed that
"-S'import.*;' --pickaxe-regex" would have been sufficient, but that 
doesn't work.

Jeff King wrote:
> On Fri, Aug 22, 2008 at 09:51:16AM -0500, Brian Ericson wrote:
>
>   
>> I'm wondering what it would take to teach git diff to invert the -S  
>> string (like git grep).
>>     
>
> I think you would have to figure out the desired semantics first.
>   
I think mostly what I want is a happy marriage between git diff & git 
grep so that if the
changed lines matched (or didn't match) the file would show up (or 
not).  I'd like to grep
added and removed lines (the diff itself) for a pattern and either 
include or exclude the file
based on matches.
>   
>> I'm finding git diff -S<string> [--pickaxe-regex] to be really useful,  
>> but find I have cases where I want to ignore differences.  For example, I 
>> might not care if the only changes to a Java file, for example, are  
>> related to import statements.  I'd like to be able to do something like  
>> "git diff -S'^import' --pickaxe-regex -v".  I'll admit I can get by with  
>> something like "git diff -S'^[^i]' --pickaxe-regex", but am pining for  
>> -v/--invert-match.
>>     
>
> I would have thought "-v" meant "match any changes which do not have
> this pattern". But you want "match any changes that have any line which
> does not have this pattern."
>   
Right.  Good summary!  It's probably not accurate to use "-S" for my 
interpretation unless
--pickaxe-regex behaved more as I outlined above.  It's probably a 
subtle enough difference
> IOW, mine would not match any changes which used an import statement,
> whereas yours would not match any changes which are _only_ import
> statements.
>   
The current behavior seems to work well to answer questions like "has 
somebody added
a System.out.println", I'd like it to be able to ignore or consider 
files based on line changes
that contain a string where the string itself did not change.

> -Peff
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
>   

  reply	other threads:[~2008-08-22 21:30 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-22 14:51 teach git diff -v/--invert-match? Brian Ericson
2008-08-22 19:39 ` Jeff King
2008-08-22 21:29   ` Brian Ericson [this message]
2008-08-22 21:42     ` Jeff King
2008-08-22 21:44       ` Junio C Hamano
2008-08-25  9:41   ` Paolo Bonzini
2008-08-27  0:38     ` Jeff King

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=48AF2FBB.2080401@visi.com \
    --to=bme@visi.com \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    /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).