environment: add GIT_PREFIX to local_repo_env

The GIT_PREFIX variable is set based on our location within the working tree. It should therefore be cleared whenever GIT_WORK_TREE is cleared. In practice, this doesn't cause any bugs, because none of the sub-programs we invoke with local_repo_env cleared actually care about GIT_PREFIX. But this is the right thing to do, and future proofs us against that assumption changing. While we're at it, let's define a GIT_PREFIX_ENVIRONMENT macro; this avoids repetition of the string literal, which can help catch any spelling mistakes in the code. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Mar 8, 2013 at 04:30 UTC a6f7f9a32532a636bd458c7a3dc2cc16fbe237d3
3 files changed +4 -2
cache.h
+1
@@ -345,6 +345,7 @@ static inline enum object_type object_type(unsigned int mode)
345 #define GIT_DIR_ENVIRONMENT "GIT_DIR"
346 #define GIT_NAMESPACE_ENVIRONMENT "GIT_NAMESPACE"
347 #define GIT_WORK_TREE_ENVIRONMENT "GIT_WORK_TREE"
348 +#define GIT_PREFIX_ENVIRONMENT "GIT_PREFIX"
349 #define DEFAULT_GIT_DIR_ENVIRONMENT ".git"
350 #define DB_ENVIRONMENT "GIT_OBJECT_DIRECTORY"
351 #define INDEX_ENVIRONMENT "GIT_INDEX_FILE"
environment.c
+1
@@ -88,6 +88,7 @@ const char * const local_repo_env[] = {
88 GRAFT_ENVIRONMENT,
89 INDEX_ENVIRONMENT,
90 NO_REPLACE_OBJECTS_ENVIRONMENT,
91 + GIT_PREFIX_ENVIRONMENT,
92 NULL
93 };
94
setup.c
+2 -2
@@ -768,9 +768,9 @@ const char *setup_git_directory_gently(int *nongit_ok)
768
769 prefix = setup_git_directory_gently_1(nongit_ok);
770 if (prefix)
771 - setenv("GIT_PREFIX", prefix, 1);
771 + setenv(GIT_PREFIX_ENVIRONMENT, prefix, 1);
772 else
773 - setenv("GIT_PREFIX", "", 1);
773 + setenv(GIT_PREFIX_ENVIRONMENT, "", 1);
774
775 if (startup_info) {
776 startup_info->have_repository = !nongit_ok || !*nongit_ok;