summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-08-05 21:52:16 -0500
committerJunio C Hamano <gitster@pobox.com>2010-08-11 09:24:01 -0700
commitee38dfb89ef88a3e4e6818b7cfe31d122a1c640d (patch)
treeb11ac9dc2cba09c86de90a996524a98661ae2c72
parenta60645f9c54c3050cbe25882feba9d5b3d1ca0d6 (diff)
downloadgit-ee38dfb89ef88a3e4e6818b7cfe31d122a1c640d.tar.gz
git wrapper: allow setup_git_directory_gently() be called earlier
In the spirit of v1.4.2-rc3~34^2^2 (Call setup_git_directory() much earlier, 2006-07-28), let run_builtin() take care of searching for a repository for built-ins that want to make use of one if present. So now you can mark your command with RUN_SETUP_GENTLY and use nongit = !startup_info->have_repository; in place of prefix = setup_git_directory_gently(&nongit); and everything will be the same, except the repository is discovered a little sooner. As v1.7.2~16^2 (2010-07-14) explains, this should allow more commands to robustly use features like "git --paginate" that look at local configuration before the command is actually run. This patch sets up the infrastructure. Later patches will teach particular commands to use it. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--git.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/git.c b/git.c
index c4b6dbea36..c1d1ee78fc 100644
--- a/git.c
+++ b/git.c
@@ -230,13 +230,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 RUN_SETUP_GENTLY (1<<1)
+#define USE_PAGER (1<<2)
/*
* 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<<3)
struct cmd_struct {
const char *cmd;
@@ -255,8 +256,12 @@ 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)
+ if (use_pager == -1 && p->option & (RUN_SETUP | RUN_SETUP_GENTLY))
use_pager = check_pager_config(p->cmd);
if (use_pager == -1 && p->option & USE_PAGER)
use_pager = 1;