On Wed, Apr 24 2019, Ævar Arnfjörð Bjarmason wrote: > Add the ability for the -G<regex> pickaxe to search only through added > or removed lines in the diff, or even through an arbitrary amount of > context lines when combined with -U<n>. > > This has been requested[1][2] a few times in the past, and isn't > currently possible. Instead users need to do -G<regex> and then write > their own post-parsing script to see if the <regex> matched added or > removed lines, or both. There was no way to match the adjacent context > lines other than running and grepping the equivalent of a "log -p -U<n>". > > 1. https://public-inbox.org/git/xmqqwoqrr8y2.fsf@xxxxxxxxxxxxxxxxxxxxxxxxx/ > 2. https://public-inbox.org/git/20190424102609.GA19697@xxxxxxxxxxxxxxxxxxxxxx/ I see now once I actually read Eugeniu Rosca's E-Mail upthread instead of just knee-jerk sending out patches that this doesn't actually solve his particular problem fully. I.e. if you want some AND/OR matching support this --pickaxe-raw-diff won't give you that, but it *does* make it much easier to script up such an option. Run it twice with -G"\+<regex>" and -G"-<regex>", "sort | uniq -c" the commit list, and see which things occur once or twice. Of course that doesn't give you more complex nested and/or cases, but if git-log grew support for that like git-grep has the -G option could use that, although at that point we'd probably want to spend effort on making the underlying machinery smarter to avoid duplicate work. Furthermore, and quoting Eugeniu upthread: In the context of [1], I would like to find all Linux commits which replaced: 'devm_request_threaded_irq(* IRQF_SHARED *)' by: 'devm_request_threaded_irq(* IRQF_ONESHOT *)' Such AND/OR machinery would give you what you wanted *most* of the time, but it would also find removed/added pairs that were "unrelated" as well as "related". Solving *that* problem is more complex, but something the diff machinery could in principle expose. But the "-G<regex> --pickaxe-raw-diff" feature I have as-is is very useful, I've had at least two people off-list ask me about a problem that would be solved by it just in the last 1/2 year (unrelated to them having seen the WIP patch I sent last October). It's more general than Junio's suggested --pickaxe-ignore-{add,del} options[1], but those could be implemented in terms of this underlying code if anyone cared to have those as aliases. You'd just take the -G<regex> and prefix the <regex> with "^\+" or "^-" as appropriate and turn on the DIFF_PICKAXE_G_RAW_DIFF flag. 1. https://public-inbox.org/git/xmqqwoqrr8y2.fsf@xxxxxxxxxxxxxxxxxxxxxxxxx/