summaryrefslogtreecommitdiff
path: root/setup.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-06-16 14:27:06 -0700
committerJunio C Hamano <gitster@pobox.com>2015-06-16 14:27:06 -0700
commit103b6f9c2b2bbafdbde694f9390fb203f70977f0 (patch)
treedbdc12e487fe6474ae9bf661e2a20020ea4cf81e /setup.c
parentc7ca4424ea5644c6aa2c660a4a0726a75f8f2b84 (diff)
parentfada767463b599951b37bd544379a1d18dcf9370 (diff)
downloadgit-103b6f9c2b2bbafdbde694f9390fb203f70977f0.tar.gz
Merge branch 'jk/die-on-bogus-worktree-late'
The setup code used to die when core.bare and core.worktree are set inconsistently, even for commands that do not need working tree. * jk/die-on-bogus-worktree-late: setup_git_directory: delay core.bare/core.worktree errors
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 863ddfd938..82c0cc2a13 100644
--- a/setup.c
+++ b/setup.c
@@ -4,6 +4,7 @@
static int inside_git_dir = -1;
static int inside_work_tree = -1;
+static int work_tree_config_is_bogus;
/*
* The input parameter must contain an absolute path, and it must already be
@@ -327,6 +328,10 @@ void setup_work_tree(void)
if (initialized)
return;
+
+ if (work_tree_config_is_bogus)
+ die("unable to set up work tree using invalid config");
+
work_tree = get_git_work_tree();
git_dir = get_git_dir();
if (!is_absolute_path(git_dir))
@@ -495,8 +500,11 @@ static const char *setup_explicit_git_dir(const char *gitdirenv,
if (work_tree_env)
set_git_work_tree(work_tree_env);
else if (is_bare_repository_cfg > 0) {
- if (git_work_tree_cfg) /* #22.2, #30 */
- die("core.bare and core.worktree do not make sense");
+ if (git_work_tree_cfg) {
+ /* #22.2, #30 */
+ warning("core.bare and core.worktree do not make sense");
+ work_tree_config_is_bogus = 1;
+ }
/* #18, #26 */
set_git_dir(gitdirenv);