Introduce is_bare_repository() and core.bare configuration variable
This removes the old is_bare_git_dir(const char *) to ask if a directory, if it is a GIT_DIR, is a bare repository, and replaces it with is_bare_repository(void *). The function looks at core.bare configuration variable if exists but uses the old heuristics: if it is ".git" or ends with "/.git", then it does not look like a bare repository, otherwise it does. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
		| @ -252,9 +252,13 @@ static int create_default_files(const char *git_dir, const char *template_path) | ||||
| 	} | ||||
| 	git_config_set("core.filemode", filemode ? "true" : "false"); | ||||
|  | ||||
| 	/* Enable logAllRefUpdates if a working tree is attached */ | ||||
| 	if (!is_bare_git_dir(git_dir)) | ||||
| 	if (is_bare_repository()) { | ||||
| 		git_config_set("core.bare", "true"); | ||||
| 	} | ||||
| 	else { | ||||
| 		git_config_set("core.bare", "false"); | ||||
| 		git_config_set("core.logallrefupdates", "true"); | ||||
| 	} | ||||
| 	return reinit; | ||||
| } | ||||
|  | ||||
|  | ||||
							
								
								
									
										3
									
								
								cache.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								cache.h
									
									
									
									
									
								
							| @ -127,7 +127,8 @@ extern int cache_errno; | ||||
| #define CONFIG_LOCAL_ENVIRONMENT "GIT_CONFIG_LOCAL" | ||||
| #define EXEC_PATH_ENVIRONMENT "GIT_EXEC_PATH" | ||||
|  | ||||
| extern int is_bare_git_dir(const char *dir); | ||||
| extern int is_bare_repository_cfg; | ||||
| extern int is_bare_repository(void); | ||||
| extern const char *get_git_dir(void); | ||||
| extern char *get_object_directory(void); | ||||
| extern char *get_refs_directory(void); | ||||
|  | ||||
							
								
								
									
										5
									
								
								config.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								config.c
									
									
									
									
									
								
							| @ -269,6 +269,11 @@ int git_default_config(const char *var, const char *value) | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	if (!strcmp(var, "core.bare")) { | ||||
| 		is_bare_repository_cfg = git_config_bool(var, value); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	if (!strcmp(var, "core.ignorestat")) { | ||||
| 		assume_unchanged = git_config_bool(var, value); | ||||
| 		return 0; | ||||
|  | ||||
| @ -15,6 +15,7 @@ int use_legacy_headers = 1; | ||||
| int trust_executable_bit = 1; | ||||
| int assume_unchanged; | ||||
| int prefer_symlink_refs; | ||||
| int is_bare_repository_cfg = -1; /* unspecified */ | ||||
| int log_all_ref_updates = -1; /* unspecified */ | ||||
| int warn_ambiguous_refs = 1; | ||||
| int repository_format_version; | ||||
| @ -53,9 +54,13 @@ static void setup_git_env(void) | ||||
| 		git_graft_file = xstrdup(git_path("info/grafts")); | ||||
| } | ||||
|  | ||||
| int is_bare_git_dir(const char *dir) | ||||
| int is_bare_repository(void) | ||||
| { | ||||
| 	const char *s; | ||||
| 	const char *dir, *s; | ||||
| 	if (0 <= is_bare_repository_cfg) | ||||
| 		return is_bare_repository_cfg; | ||||
|  | ||||
| 	dir = get_git_dir(); | ||||
| 	if (!strcmp(dir, DEFAULT_GIT_DIR_ENVIRONMENT)) | ||||
| 		return 0; | ||||
| 	s = strrchr(dir, '/'); | ||||
|  | ||||
							
								
								
									
										2
									
								
								refs.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								refs.c
									
									
									
									
									
								
							| @ -924,7 +924,7 @@ static int log_ref_write(struct ref_lock *lock, | ||||
| 	const char *committer; | ||||
|  | ||||
| 	if (log_all_ref_updates < 0) | ||||
| 		log_all_ref_updates = !is_bare_git_dir(get_git_dir()); | ||||
| 		log_all_ref_updates = !is_bare_repository(); | ||||
|  | ||||
| 	if (log_all_ref_updates && | ||||
| 	    (!strncmp(lock->ref_name, "refs/heads/", 11) || | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Junio C Hamano
					Junio C Hamano