summaryrefslogtreecommitdiff
path: root/ref-filter.c
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2017-03-21 12:58:49 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-03-21 18:19:52 (GMT)
commit17d6c744dc0d5ed4cd0f228da14239ea2654f05b (patch)
treef79f6b944636060af6bad10e05f5ab267359b34b /ref-filter.c
parent8881d35cace41604dba72c1b6b5ab5a59e0c2b94 (diff)
downloadgit-17d6c744dc0d5ed4cd0f228da14239ea2654f05b.zip
git-17d6c744dc0d5ed4cd0f228da14239ea2654f05b.tar.gz
git-17d6c744dc0d5ed4cd0f228da14239ea2654f05b.tar.bz2
ref-filter: make combining --merged & --no-merged an error
Change the behavior of specifying --merged & --no-merged to be an error, instead of silently picking the option that was provided last. Subsequent changes of mine add a --no-contains option in addition to the existing --contains. Providing both of those isn't an error, and has actual meaning. Making its cousins have different behavior in this regard would be confusing to the user, especially since we'd be silently disregarding some of their command-line input. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'ref-filter.c')
-rw-r--r--ref-filter.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/ref-filter.c b/ref-filter.c
index 7eeecc6..81da37b 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -2084,8 +2084,17 @@ int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset)
{
struct ref_filter *rf = opt->value;
unsigned char sha1[20];
+ int no_merged = starts_with(opt->long_name, "no");
- rf->merge = starts_with(opt->long_name, "no")
+ if (rf->merge) {
+ if (no_merged) {
+ return opterror(opt, "is incompatible with --merged", 0);
+ } else {
+ return opterror(opt, "is incompatible with --no-merged", 0);
+ }
+ }
+
+ rf->merge = no_merged
? REF_FILTER_MERGED_OMIT
: REF_FILTER_MERGED_INCLUDE;