summaryrefslogtreecommitdiff
path: root/setup.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-04-03 09:25:41 -0700
committerJunio C Hamano <gitster@pobox.com>2013-04-03 09:25:41 -0700
commiteeecf393972b9ca4a37adb8785f16e9617eecc57 (patch)
tree93ce84715443f1ef90ce5f8e90ebb75cf4056103 /setup.c
parente6658b9d6917d9888fa41702bf53393c57de0631 (diff)
parent2cd83d10bb6bcf768129e1c4e5a4dee4b6bcd27f (diff)
downloadgit-eeecf393972b9ca4a37adb8785f16e9617eecc57.tar.gz
Merge branch 'jk/alias-in-bare' into maint
An aliased command spawned from a bare repository that does not say it is bare with "core.bare = yes" is treated as non-bare by mistake. * jk/alias-in-bare: setup: suppress implicit "." work-tree for bare repos environment: add GIT_PREFIX to local_repo_env cache.h: drop LOCAL_REPO_ENV_SIZE
Diffstat (limited to 'setup.c')
-rw-r--r--setup.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/setup.c b/setup.c
index a2be9690ad..94c1e61bda 100644
--- a/setup.c
+++ b/setup.c
@@ -525,6 +525,12 @@ static const char *setup_explicit_git_dir(const char *gitdirenv,
set_git_work_tree(core_worktree);
}
}
+ else if (!git_env_bool(GIT_IMPLICIT_WORK_TREE_ENVIRONMENT, 1)) {
+ /* #16d */
+ set_git_dir(gitdirenv);
+ free(gitfile);
+ return NULL;
+ }
else /* #2, #10 */
set_git_work_tree(".");
@@ -603,6 +609,8 @@ static const char *setup_bare_git_dir(char *cwd, int offset, int len, int *nongi
if (check_repository_format_gently(".", nongit_ok))
return NULL;
+ setenv(GIT_IMPLICIT_WORK_TREE_ENVIRONMENT, "0", 1);
+
/* --work-tree is set without --git-dir; use discovered one */
if (getenv(GIT_WORK_TREE_ENVIRONMENT) || git_work_tree_cfg) {
const char *gitdir;
@@ -796,9 +804,9 @@ const char *setup_git_directory_gently(int *nongit_ok)
prefix = setup_git_directory_gently_1(nongit_ok);
if (prefix)
- setenv("GIT_PREFIX", prefix, 1);
+ setenv(GIT_PREFIX_ENVIRONMENT, prefix, 1);
else
- setenv("GIT_PREFIX", "", 1);
+ setenv(GIT_PREFIX_ENVIRONMENT, "", 1);
if (startup_info) {
startup_info->have_repository = !nongit_ok || !*nongit_ok;