From: Junio C Hamano Date: Mon, 14 Jan 2019 23:29:31 +0000 (-0800) Subject: Merge branch 'tb/log-G-binary' X-Git-Tag: v2.21.0-rc0~113 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/ecdc7cbbac04241f1e5a90fb1fff13cff2ed7a82?ds=inline;hp=-c Merge branch 'tb/log-G-binary' "git log -G" looked for a hunk in the "git log -p" patch output that contained a string that matches the given pattern. Optimize this code to ignore binary files, which by default will not show any hunk that would match any pattern (unless textconv or the --text option is in effect, that is). * tb/log-G-binary: log -G: ignore binary files --- ecdc7cbbac04241f1e5a90fb1fff13cff2ed7a82 diff --combined diffcore-pickaxe.c index ad939d2861,4cea086f80..a9c6d60df2 --- a/diffcore-pickaxe.c +++ b/diffcore-pickaxe.c @@@ -140,8 -140,8 +140,8 @@@ static int pickaxe_match(struct diff_fi return 0; if (o->flags.allow_textconv) { - textconv_one = get_textconv(o->repo->index, p->one); - textconv_two = get_textconv(o->repo->index, p->two); + textconv_one = get_textconv(o->repo, p->one); + textconv_two = get_textconv(o->repo, p->two); } /* @@@ -154,6 -154,12 +154,12 @@@ if (textconv_one == textconv_two && diff_unmodified_pair(p)) return 0; + if ((o->pickaxe_opts & DIFF_PICKAXE_KIND_G) && + !o->flags.text && + ((!textconv_one && diff_filespec_is_binary(o->repo, p->one)) || + (!textconv_two && diff_filespec_is_binary(o->repo, p->two)))) + return 0; + mf1.size = fill_textconv(o->repo, textconv_one, p->one, &mf1.ptr); mf2.size = fill_textconv(o->repo, textconv_two, p->two, &mf2.ptr);