config: complain about --local outside of a git repo
The "--local" option instructs git-config to read or modify
the repository-level config. This doesn't make any sense if
you're not actually in a repository.
Older versions of Git would blindly try to read or write
".git/config". For reading, this would result in a quiet
failure, since there was no config to read (and thus no
matching config value). Writing would generally fail
noisily, since ".git" was unlikely to exist. But since
b1ef400ee (setup_git_env: avoid blind fall-back to ".git",
2016-10-20), we catch this in the call to git_pathdup() and
die with an assertion.
Dying is the right thing to do, but we should catch the
problem early and give a more human-friendly error message.
Note that even without --local, git-config will sometimes
default to using local repository config (e.g., when
writing). These cases are already protected by similar
checks, and covered by a test in t1308.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
				maint
			
			
		
							parent
							
								
									588a538ae5
								
							
						
					
					
						commit
						25cd291963
					
				|  | @ -496,6 +496,9 @@ int cmd_config(int argc, const char **argv, const char *prefix) | ||||||
| 		usage_with_options(builtin_config_usage, builtin_config_options); | 		usage_with_options(builtin_config_usage, builtin_config_options); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	if (use_local_config && nongit) | ||||||
|  | 		die(_("--local can only be used inside a git repository")); | ||||||
|  |  | ||||||
| 	if (given_config_source.file && | 	if (given_config_source.file && | ||||||
| 			!strcmp(given_config_source.file, "-")) { | 			!strcmp(given_config_source.file, "-")) { | ||||||
| 		given_config_source.file = NULL; | 		given_config_source.file = NULL; | ||||||
|  |  | ||||||
|  | @ -1539,7 +1539,7 @@ test_expect_success !MINGW '--show-origin blob ref' ' | ||||||
| 	test_cmp expect output | 	test_cmp expect output | ||||||
| ' | ' | ||||||
|  |  | ||||||
| test_expect_failure '--local requires a repo' ' | test_expect_success '--local requires a repo' ' | ||||||
| 	# we expect 128 to ensure that we do not simply | 	# we expect 128 to ensure that we do not simply | ||||||
| 	# fail to find anything and return code "1" | 	# fail to find anything and return code "1" | ||||||
| 	test_expect_code 128 nongit git config --local foo.bar | 	test_expect_code 128 nongit git config --local foo.bar | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Jeff King
						Jeff King