From: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> Attempts to access gitdir are everywhere, even before cmd_*() is called (examples: alias handling, pager configuration, work tree). Because the repository has not been found, repository-specific information (i.e., $GIT_DIR/config) can not be read. This leads to obscure bugs. So the sooner we setup gitdir, the less trouble we may have to deal with. This patch sets up the infrastructure. Later patches will teach particular commands to use it where applicable. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- git.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) diff --git a/git.c b/git.c index b1d51c9..20e9bfc 100644 --- a/git.c +++ b/git.c @@ -220,13 +220,14 @@ static int handle_alias(int *argcp, const char ***argv) const char git_version_string[] = GIT_VERSION; -#define RUN_SETUP (1<<0) -#define USE_PAGER (1<<1) +#define RUN_SETUP (1<<0) +#define USE_PAGER (1<<1) /* * require working tree to be present -- anything uses this needs * RUN_SETUP for reading from the configuration file. */ -#define NEED_WORK_TREE (1<<2) +#define NEED_WORK_TREE (1<<2) +#define RUN_SETUP_GENTLY (1<<3) struct cmd_struct { const char *cmd; @@ -245,6 +246,10 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv) if (!help) { if (p->option & RUN_SETUP) prefix = setup_git_directory(); + if (p->option & RUN_SETUP_GENTLY) { + int nongit_ok; + prefix = setup_git_directory_gently(&nongit_ok); + } if (use_pager == -1 && p->option & RUN_SETUP) use_pager = check_pager_config(p->cmd); -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html