summaryrefslogtreecommitdiff
path: root/cache.h
diff options
context:
space:
mode:
authorBrandon Williams <bmwill@google.com>2017-06-20 19:19:32 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-06-24 01:24:34 (GMT)
commit73f192c991016bf88a9416cdf0e949f8b946f7e2 (patch)
treef86acaeb5a732acfd642a9b60ca5e76d2728c292 /cache.h
parent25bf951381a4880c43a3d1c65e6dce651e61148f (diff)
downloadgit-73f192c991016bf88a9416cdf0e949f8b946f7e2.zip
git-73f192c991016bf88a9416cdf0e949f8b946f7e2.tar.gz
git-73f192c991016bf88a9416cdf0e949f8b946f7e2.tar.bz2
setup: don't perform lazy initialization of repository state
Under some circumstances (bogus GIT_DIR value or the discovered gitdir is '.git') 'setup_git_directory()' won't initialize key repository state. This leads to inconsistent state after running the setup code. To account for this inconsistent state, lazy initialization is done once a caller asks for the repository's gitdir or some other piece of repository state. This is confusing and can be error prone. Instead let's tighten the expected outcome of 'setup_git_directory()' and ensure that it initializes repository state in all cases that would have been handled by lazy initialization. This also lets us drop the requirement to have 'have_git_dir()' check if the environment variable GIT_DIR was set as that will be handled by the end of the setup code. Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'cache.h')
-rw-r--r--cache.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/cache.h b/cache.h
index 96055c2..7c81749 100644
--- a/cache.h
+++ b/cache.h
@@ -462,6 +462,8 @@ static inline enum object_type object_type(unsigned int mode)
*/
extern const char * const local_repo_env[];
+extern void setup_git_env(void);
+
/*
* Returns true iff we have a configured git repository (either via
* setup_git_directory, or in the environment via $GIT_DIR).