Hi, On Thu, 20 Sep 2007, Bart Trojanowski wrote: > * Johannes Schindelin <Johannes.Schindelin@xxxxxx> [070920 06:34]: > > On Wed, 19 Sep 2007, Bart Trojanowski wrote: > > > git log --invert-match --grep="uninteresting" > > > > IMHO this is only half a solution. Some of us want to say "git log > > --grep=this --but-not-(in-the-whole-message) --grep=that". > > I have noticed that unique negation flags are getting scarce... we > already have --reverse, --inverse, and --not mean something elsewhere. > --but-not maybe be good. > > I also agree that git-grep could use this extension. > > Anyways, I can see four solutions for adding "show me this but not that" > functionality to git-rev-list: > > 1) adding a --but-not flag, as you suggested. It separates positive > matches that precede it with negative matches that follow. > > Example: > git log --grep=this --but-not --grep=that --committer="${MY_EMAIL}" That is basically the approach taken by http://article.gmane.org/gmane.comp.version-control.git/51874 (Yes, since you refused to search in the mailing list archives, I did it for you... this time!) > 2) Adding --not-grep, --not-author, --not-committer which add negative > matches. Maybe even --grep!=PATTERN, --author!=PATTERN, ... > > Example: > git log --grep=this --not-grep=that --committer!="${MY_EMAIL}" That sounds sensible. > 3) Extending the PATTERN we accept in --grep, --author, and --committer, > such that a prefix in the pattern tells us how to use the match: > --grep=!PATTERN > > Example: > git log --grep=this --grep='!that' --committer="!${MY_EMAIL}" Now you can no longer avoid defining clean semantics: what does that mean? Does it mean that there is _one_ line that does not have "that" in it, or is it the complete message? Further, it probably makes sense to have the option to say _both_: "Find me a commit that contains Bart in one line, but not Simpson, and that does not contain the word "Sverdoolaege" at all." > 4) (going on a limb here) Can this kind of match be done with perl > regular expressions? Maybe we could use --perl-regexp > > Example: > I've got nothing :) This time you'll have to find the thread yourself. Hint: search for pcre. Ciao, Dscho - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html