Skip to content

Commit

Permalink
config: fail if --get-urlmatch finds no value
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
John Keeping authored and Junio C Hamano committed Feb 28, 2016
1 parent 326e5bc commit 27b30be
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Documentation/git-config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion builtin/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 };
Expand All @@ -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;
Expand All @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions t/t1300-repo-config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 &&
Expand Down

0 comments on commit 27b30be

Please sign in to comment.