diff: properly error out when combining multiple pickaxe options

In f506b8e8b5 (git log/diff: add -G<regexp> that greps in the patch text, 2010-08-23) we were hesitant to check if the user requests both -S and -G at the same time. Now that the pickaxe family also offers --find-object, which looks slightly more different than the former two, let's add a check that those are not used at the same time. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Stefan Beller committed Jan 4, 2018 at 14:50 UTC 5e505257f2651647c072f9c61fdc5dd52bbce8b2
2 files changed +3 -1
diff.c
+3
@@ -4123,6 +4123,9 @@ void diff_setup_done(struct diff_options *options)
4123 if (count > 1)
4124 die(_("--name-only, --name-status, --check and -s are mutually exclusive"));
4125
4126 + if (HAS_MULTI_BITS(options->pickaxe_opts & DIFF_PICKAXE_KINDS_MASK))
4127 + die(_("-G, -S and --find-object are mutually exclusive"));
4128 +
4129 /*
4130 * Most of the time we can say "there are changes"
4131 * only by checking if there are changed paths, but
diffcore-pickaxe.c
-1
@@ -251,7 +251,6 @@ void diffcore_pickaxe(struct diff_options *o)
251 }
252 }
253
254 - /* Might want to warn when both S and G are on; I don't care... */
254 pickaxe(&diff_queued_diff, o, regexp, kws,
255 (opts & DIFF_PICKAXE_KIND_G) ? diff_grep : has_changes);
256