diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-06-16 14:27:06 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-06-16 14:27:06 -0700 |
commit | 103b6f9c2b2bbafdbde694f9390fb203f70977f0 (patch) | |
tree | dbdc12e487fe6474ae9bf661e2a20020ea4cf81e /setup.c | |
parent | c7ca4424ea5644c6aa2c660a4a0726a75f8f2b84 (diff) | |
parent | fada767463b599951b37bd544379a1d18dcf9370 (diff) | |
download | git-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.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -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); |