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>maint
							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
	
	 John Keeping
						John Keeping