Merge branch 'nd/stop-setenv-work-tree' into nd/clear-gitenv-upon-use-of-alias
authorJunio C Hamano <gitster@pobox.com>
Tue, 22 Dec 2015 21:39:47 +0000 (13:39 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 22 Dec 2015 21:40:12 +0000 (13:40 -0800)
* nd/stop-setenv-work-tree:
Revert "setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR"

1  2 
environment.c
diff --combined environment.c
index 03cf5f67a61f7f88d47208f79d7e1bdf9bb9fd0e,9daa0ba4a36ced9f63541203e7bcc2ab9e1eae56..61c685b8d93091666891f0091d5005fe62543fc2
@@@ -24,7 -24,6 +24,7 @@@ int is_bare_repository_cfg = -1; /* uns
  int log_all_ref_updates = -1; /* unspecified */
  int warn_ambiguous_refs = 1;
  int warn_on_object_refname_ambiguity = 1;
 +int ref_paranoia = -1;
  int repository_format_version;
  const char *git_commit_encoding;
  const char *git_log_output_encoding;
@@@ -38,7 -37,7 +38,7 @@@ int core_compression_seen
  int fsync_object_files;
  size_t packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE;
  size_t packed_git_limit = DEFAULT_PACKED_GIT_LIMIT;
 -size_t delta_base_cache_limit = 16 * 1024 * 1024;
 +size_t delta_base_cache_limit = 96 * 1024 * 1024;
  unsigned long big_file_threshold = 512 * 1024 * 1024;
  const char *pager_program;
  int pager_use_color = 1;
@@@ -80,10 -79,9 +80,10 @@@ int protect_ntfs = PROTECT_NTFS_DEFAULT
   * that is subject to stripspace.
   */
  char comment_line_char = '#';
 +int auto_comment_line_char;
  
  /* Parallel index stat data preload? */
 -int core_preload_index = 0;
 +int core_preload_index = 1;
  
  /* This is set by setup_git_dir_gently() and/or git_default_config() */
  char *git_work_tree_cfg;
@@@ -92,9 -90,8 +92,9 @@@ static char *work_tree
  static const char *namespace;
  static size_t namespace_len;
  
 -static const char *git_dir;
 +static const char *git_dir, *git_common_dir;
  static char *git_object_dir, *git_index_file, *git_graft_file;
 +int git_db_env, git_index_env, git_graft_env, git_common_dir_env;
  
  /*
   * Repository-local GIT_* environment variables; see cache.h for details.
@@@ -112,7 -109,6 +112,7 @@@ const char * const local_repo_env[] = 
        NO_REPLACE_OBJECTS_ENVIRONMENT,
        GIT_PREFIX_ENVIRONMENT,
        GIT_SHALLOW_FILE_ENVIRONMENT,
 +      GIT_COMMON_DIR_ENVIRONMENT,
        NULL
  };
  
@@@ -137,23 -133,8 +137,23 @@@ static char *expand_namespace(const cha
        return strbuf_detach(&buf, NULL);
  }
  
 +static char *git_path_from_env(const char *envvar, const char *git_dir,
 +                             const char *path, int *fromenv)
 +{
 +      const char *value = getenv(envvar);
 +      if (!value) {
 +              char *buf = xmalloc(strlen(git_dir) + strlen(path) + 2);
 +              sprintf(buf, "%s/%s", git_dir, path);
 +              return buf;
 +      }
 +      if (fromenv)
 +              *fromenv = 1;
 +      return xstrdup(value);
 +}
 +
  static void setup_git_env(void)
  {
 +      struct strbuf sb = STRBUF_INIT;
        const char *gitfile;
        const char *shallow_file;
  
                git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
        gitfile = read_gitfile(git_dir);
        git_dir = xstrdup(gitfile ? gitfile : git_dir);
 -      git_object_dir = getenv(DB_ENVIRONMENT);
 -      if (!git_object_dir) {
 -              git_object_dir = xmalloc(strlen(git_dir) + 9);
 -              sprintf(git_object_dir, "%s/objects", git_dir);
 -      }
 -      git_index_file = getenv(INDEX_ENVIRONMENT);
 -      if (!git_index_file) {
 -              git_index_file = xmalloc(strlen(git_dir) + 7);
 -              sprintf(git_index_file, "%s/index", git_dir);
 -      }
 -      git_graft_file = getenv(GRAFT_ENVIRONMENT);
 -      if (!git_graft_file)
 -              git_graft_file = git_pathdup("info/grafts");
 +      if (get_common_dir(&sb, git_dir))
 +              git_common_dir_env = 1;
 +      git_common_dir = strbuf_detach(&sb, NULL);
 +      git_object_dir = git_path_from_env(DB_ENVIRONMENT, git_common_dir,
 +                                         "objects", &git_db_env);
 +      git_index_file = git_path_from_env(INDEX_ENVIRONMENT, git_dir,
 +                                         "index", &git_index_env);
 +      git_graft_file = git_path_from_env(GRAFT_ENVIRONMENT, git_common_dir,
 +                                         "info/grafts", &git_graft_env);
        if (getenv(NO_REPLACE_OBJECTS_ENVIRONMENT))
                check_replace_refs = 0;
        namespace = expand_namespace(getenv(GIT_NAMESPACE_ENVIRONMENT));
@@@ -193,11 -178,6 +193,11 @@@ const char *get_git_dir(void
        return git_dir;
  }
  
 +const char *get_git_common_dir(void)
 +{
 +      return git_common_dir;
 +}
 +
  const char *get_git_namespace(void)
  {
        if (!namespace)
@@@ -231,8 -211,6 +231,6 @@@ void set_git_work_tree(const char *new_
        }
        git_work_tree_initialized = 1;
        work_tree = xstrdup(real_path(new_work_tree));
-       if (setenv(GIT_WORK_TREE_ENVIRONMENT, work_tree, 1))
-               die("could not set GIT_WORK_TREE to '%s'", work_tree);
  }
  
  const char *get_git_work_tree(void)