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>
This commit is contained in:
parent
326e5bc91e
commit
27b30be686
@ -102,7 +102,7 @@ OPTIONS
|
|||||||
given URL is returned (if no such key exists, the value for
|
given URL is returned (if no such key exists, the value for
|
||||||
section.key is used as a fallback). When given just the
|
section.key is used as a fallback). When given just the
|
||||||
section as name, do so for all the keys in the section and
|
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::
|
--global::
|
||||||
For writing options: write to global `~/.gitconfig` file
|
For writing options: write to global `~/.gitconfig` file
|
||||||
|
@ -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)
|
static int get_urlmatch(const char *var, const char *url)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
char *section_tail;
|
char *section_tail;
|
||||||
struct string_list_item *item;
|
struct string_list_item *item;
|
||||||
struct urlmatch_config config = { STRING_LIST_INIT_DUP };
|
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,
|
git_config_with_options(urlmatch_config_entry, &config,
|
||||||
&given_config_source, respect_includes);
|
&given_config_source, respect_includes);
|
||||||
|
|
||||||
|
ret = !values.nr;
|
||||||
|
|
||||||
for_each_string_list_item(item, &values) {
|
for_each_string_list_item(item, &values) {
|
||||||
struct urlmatch_current_candidate_value *matched = item->util;
|
struct urlmatch_current_candidate_value *matched = item->util;
|
||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
@ -431,7 +434,7 @@ static int get_urlmatch(const char *var, const char *url)
|
|||||||
free(config.url.url);
|
free(config.url.url);
|
||||||
|
|
||||||
free((void *)config.section);
|
free((void *)config.section);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *default_user_config(void)
|
static char *default_user_config(void)
|
||||||
|
@ -1140,6 +1140,9 @@ test_expect_success 'urlmatch' '
|
|||||||
cookieFile = /tmp/cookie.txt
|
cookieFile = /tmp/cookie.txt
|
||||||
EOF
|
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 &&
|
echo true >expect &&
|
||||||
git config --bool --get-urlmatch http.SSLverify https://good.example.com >actual &&
|
git config --bool --get-urlmatch http.SSLverify https://good.example.com >actual &&
|
||||||
test_cmp expect actual &&
|
test_cmp expect actual &&
|
||||||
|
Loading…
Reference in New Issue
Block a user