diff options
author | John Keeping <john@keeping.me.uk> | 2016-02-28 14:54:35 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-02-28 23:01:45 +0300 |
commit | 27b30be686e497e6ab84dc0b25623df7aba1ba2c (patch) | |
tree | 048eedeb7dc98fa1ade92fb6d1fee205de64a6ef | |
parent | 326e5bc91eecf73234ead29636207bc516573e79 (diff) |
config: fail if --get-urlmatch finds no value
The --get, --get-all and --get-regexp options to git-config exit with
status 1 if the key is not found but --get-urlmatch succeeds in this
case.
Change --get-urlmatch to behave in the same way as the other --get*
options so that all four are consistent. --get-color is a special case
because it accepts a default value to return and so should not return an
error if the key is not found.
Also clarify this behaviour in the documentation.
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Documentation/git-config.txt | 2 | ||||
-rw-r--r-- | builtin/config.c | 5 | ||||
-rwxr-xr-x | t/t1300-repo-config.sh | 3 |
3 files changed, 8 insertions, 2 deletions
diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt index 2608ca74ac..b96149495a 100644 --- a/Documentation/git-config.txt +++ b/Documentation/git-config.txt @@ -102,7 +102,7 @@ OPTIONS given URL is returned (if no such key exists, the value for section.key is used as a fallback). When given just the section as name, do so for all the keys in the section and - list them. + list them. Returns error code 1 if no value is found. --global:: For writing options: write to global `~/.gitconfig` file diff --git a/builtin/config.c b/builtin/config.c index adc772786a..b92abb74fe 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -389,6 +389,7 @@ static int urlmatch_collect_fn(const char *var, const char *value, void *cb) static int get_urlmatch(const char *var, const char *url) { + int ret; char *section_tail; struct string_list_item *item; struct urlmatch_config config = { STRING_LIST_INIT_DUP }; @@ -415,6 +416,8 @@ static int get_urlmatch(const char *var, const char *url) git_config_with_options(urlmatch_config_entry, &config, &given_config_source, respect_includes); + ret = !values.nr; + for_each_string_list_item(item, &values) { struct urlmatch_current_candidate_value *matched = item->util; struct strbuf buf = STRBUF_INIT; @@ -431,7 +434,7 @@ static int get_urlmatch(const char *var, const char *url) free(config.url.url); free((void *)config.section); - return 0; + return ret; } static char *default_user_config(void) diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index 52678e7d0a..175e73cbb6 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -1140,6 +1140,9 @@ test_expect_success 'urlmatch' ' cookieFile = /tmp/cookie.txt EOF + test_expect_code 1 git config --bool --get-urlmatch doesnt.exist https://good.example.com >actual && + test_must_be_empty actual && + echo true >expect && git config --bool --get-urlmatch http.SSLverify https://good.example.com >actual && test_cmp expect actual && |