X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=environment.c;h=54c22f8248cc04647829c8a7558f2bb24515f30f;hb=8860fd42fcf5a7853f7d7c2198793183320293ff;hp=87162b257254434be356b1a579967d51adff1e5f;hpb=182a8dabd5f5f646608f3857f10f3ac18c3d1445;p=git.git diff --git a/environment.c b/environment.c index 87162b257..54c22f824 100644 --- a/environment.c +++ b/environment.c @@ -13,20 +13,25 @@ char git_default_email[MAX_GITNAME]; char git_default_name[MAX_GITNAME]; int use_legacy_headers = 1; int trust_executable_bit = 1; -int assume_unchanged = 0; -int prefer_symlink_refs = 0; -int log_all_ref_updates = 0; +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 = 0; -char git_commit_encoding[MAX_ENCODING_LENGTH] = "utf-8"; +int repository_format_version; +char *git_commit_encoding; +char *git_log_output_encoding; int shared_repository = PERM_UMASK; -const char *apply_default_whitespace = NULL; +const char *apply_default_whitespace; int zlib_compression_level = Z_DEFAULT_COMPRESSION; +size_t packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE; +size_t packed_git_limit = DEFAULT_PACKED_GIT_LIMIT; int pager_in_use; int pager_use_color = 1; -static char *git_dir, *git_object_dir, *git_index_file, *git_refs_dir, - *git_graft_file; +static const char *git_dir; +static char *git_object_dir, *git_index_file, *git_refs_dir, *git_graft_file; + static void setup_git_env(void) { git_dir = getenv(GIT_DIR_ENVIRONMENT); @@ -46,10 +51,23 @@ static void setup_git_env(void) } git_graft_file = getenv(GRAFT_ENVIRONMENT); if (!git_graft_file) - git_graft_file = strdup(git_path("info/grafts")); + git_graft_file = xstrdup(git_path("info/grafts")); +} + +int is_bare_repository(void) +{ + 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, '/'); + return !s || strcmp(s + 1, DEFAULT_GIT_DIR_ENVIRONMENT); } -char *get_git_dir(void) +const char *get_git_dir(void) { if (!git_dir) setup_git_env();