git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/18] Search and set up repository early for builtin commands
@ 2010-03-07  4:55 Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 01/18] builtin: introduce startup_info struct Nguyễn Thái Ngọc Duy
                   ` (17 more replies)
  0 siblings, 18 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

This is a simpler part of my Git setup cleanup WIP [1], to introduce
RUN_SETUP_GENTLY and make most of commands use it.

The commands that do not have RUN_SETUP* are:
 - Init/Clone commands
 - Server commands
 - Helpers that have nothing to do with repositories
 - git-rev-parse

[1] http://mid.gmane.org/1266336317-607-1-git-send-email-pclouds@gmail.com

Nguyễn Thái Ngọc Duy (18):
  builtin: introduce startup_info struct
  builtin: Support RUN_SETUP_GENTLY to set up repository early if found
  config: use RUN_SETUP_GENTLY
  hash-object: use RUN_SETUP_GENTLY
  shortlog: use RUN_SETUP_GENTLY
  grep: use RUN_SETUP_GENTLY
  builtin: USE_PAGER should not be used without RUN_SETUP*
  archive: use RUN_SETUP_GENTLY
  mailinfo: use RUN_SETUP_GENTLY
  check-ref-format: use RUN_SETUP_GENTLY
  verify-pack: use RUN_SETUP_GENTLY
  apply: use RUN_SETUP_GENTLY
  bundle: use RUN_SETUP_GENTLY
  diff: use RUN_SETUP_GENTLY
  help: use RUN_SETUP_GENTLY
  ls-remote: use RUN_SETUP_GENTLY
  var: use RUN_SETUP_GENTLY
  merge-file: use RUN_SETUP_GENTLY

 builtin/apply.c       |    7 ++---
 builtin/archive.c     |    2 +-
 builtin/bundle.c      |    6 +---
 builtin/config.c      |    6 +---
 builtin/diff.c        |    6 +---
 builtin/grep.c        |    9 ++-----
 builtin/hash-object.c |    9 ++++---
 builtin/help.c        |    2 -
 builtin/ls-remote.c   |    3 --
 builtin/mailinfo.c    |    3 --
 builtin/merge-file.c  |    4 +--
 builtin/shortlog.c    |    4 +--
 builtin/var.c         |    2 -
 cache.h               |    7 +++++
 environment.c         |    1 +
 git.c                 |   61 ++++++++++++++++++++++++++++---------------------
 setup.c               |   14 ++++++++++-
 17 files changed, 76 insertions(+), 70 deletions(-)

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 01/18] builtin: introduce startup_info struct
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 02/18] builtin: Support RUN_SETUP_GENTLY to set up repository early if found Nguyễn Thái Ngọc Duy
                   ` (16 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

The purpose of this struct is to make it easier to extend parameters
passed to builtin commands from run_builtin(), and let libgit aware of
some global states in future.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 cache.h       |    6 ++++++
 environment.c |    1 +
 git.c         |    9 +++++----
 setup.c       |   12 +++++++++++-
 4 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/cache.h b/cache.h
index 89f6a40..30fddf1 100644
--- a/cache.h
+++ b/cache.h
@@ -1054,4 +1054,10 @@ void overlay_tree_on_cache(const char *tree_name, const char *prefix);
 char *alias_lookup(const char *alias);
 int split_cmdline(char *cmdline, const char ***argv);
 
+/* git.c */
+struct startup_info {
+	const char *prefix;
+};
+extern struct startup_info *startup_info;
+
 #endif /* CACHE_H */
diff --git a/environment.c b/environment.c
index 876c5e5..c36c902 100644
--- a/environment.c
+++ b/environment.c
@@ -52,6 +52,7 @@ enum object_creation_mode object_creation_mode = OBJECT_CREATION_MODE;
 char *notes_ref_name;
 int grafts_replace_parents = 1;
 int core_apply_sparse_checkout;
+struct startup_info *startup_info;
 
 /* Parallel index stat data preload? */
 int core_preload_index = 0;
diff --git a/git.c b/git.c
index 6bae305..4be34e4 100644
--- a/git.c
+++ b/git.c
@@ -13,6 +13,7 @@ const char git_usage_string[] =
 const char git_more_info_string[] =
 	"See 'git help COMMAND' for more information on a specific command.";
 
+static struct startup_info git_startup_info;
 static int use_pager = -1;
 struct pager_config {
 	const char *cmd;
@@ -237,13 +238,13 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
 {
 	int status, help;
 	struct stat st;
-	const char *prefix;
 
-	prefix = NULL;
+	memset(&git_startup_info, 0, sizeof(git_startup_info));
+	startup_info = &git_startup_info;
 	help = argc == 2 && !strcmp(argv[1], "-h");
 	if (!help) {
 		if (p->option & RUN_SETUP)
-			prefix = setup_git_directory();
+			setup_git_directory();
 
 		if (use_pager == -1 && p->option & RUN_SETUP)
 			use_pager = check_pager_config(p->cmd);
@@ -257,7 +258,7 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
 
 	trace_argv_printf(argv, "trace: built-in: git");
 
-	status = p->fn(argc, argv, prefix);
+	status = p->fn(argc, argv, startup_info->prefix);
 	if (status)
 		return status;
 
diff --git a/setup.c b/setup.c
index 5716d90..cf1b37d 100644
--- a/setup.c
+++ b/setup.c
@@ -315,7 +315,7 @@ const char *read_gitfile_gently(const char *path)
  * We cannot decide in this function whether we are in the work tree or
  * not, since the config can only be read _after_ this function was called.
  */
-const char *setup_git_directory_gently(int *nongit_ok)
+static const char *setup_git_directory_gently_1(int *nongit_ok)
 {
 	const char *work_tree_env = getenv(GIT_WORK_TREE_ENVIRONMENT);
 	const char *env_ceiling_dirs = getenv(CEILING_DIRECTORIES_ENVIRONMENT);
@@ -443,6 +443,16 @@ const char *setup_git_directory_gently(int *nongit_ok)
 	return cwd + offset;
 }
 
+const char *setup_git_directory_gently(int *nongit_ok)
+{
+	const char *prefix;
+
+	prefix = setup_git_directory_gently_1(nongit_ok);
+	if (startup_info)
+		startup_info->prefix = prefix;
+	return prefix;
+}
+
 int git_config_perm(const char *var, const char *value)
 {
 	int i;
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 02/18] builtin: Support RUN_SETUP_GENTLY to set up repository early if found
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 01/18] builtin: introduce startup_info struct Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 03/18] config: use RUN_SETUP_GENTLY Nguyễn Thái Ngọc Duy
                   ` (15 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

Attempts to access gitdir are everywhere, even before cmd_*() is
called. Because repository has not been found, repository-specific
information (i.e. $GIT_DIR/config) may not be read. This leads to
obscure bugs.

So the sooner we setup gitdir, the less trouble we may have to deal with.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 cache.h |    1 +
 git.c   |   11 ++++++++---
 setup.c |    4 +++-
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/cache.h b/cache.h
index 30fddf1..68412c0 100644
--- a/cache.h
+++ b/cache.h
@@ -1057,6 +1057,7 @@ int split_cmdline(char *cmdline, const char ***argv);
 /* git.c */
 struct startup_info {
 	const char *prefix;
+	int have_repository;
 };
 extern struct startup_info *startup_info;
 
diff --git a/git.c b/git.c
index 4be34e4..9e0e2d0 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)
 			setup_git_directory();
+		if (p->option & RUN_SETUP_GENTLY) {
+			int nongit_ok;
+			setup_git_directory_gently(&nongit_ok);
+		}
 
 		if (use_pager == -1 && p->option & RUN_SETUP)
 			use_pager = check_pager_config(p->cmd);
diff --git a/setup.c b/setup.c
index cf1b37d..bb3648c 100644
--- a/setup.c
+++ b/setup.c
@@ -448,8 +448,10 @@ const char *setup_git_directory_gently(int *nongit_ok)
 	const char *prefix;
 
 	prefix = setup_git_directory_gently_1(nongit_ok);
-	if (startup_info)
+	if (startup_info) {
 		startup_info->prefix = prefix;
+		startup_info->have_repository = !nongit_ok || !*nongit_ok;
+	}
 	return prefix;
 }
 
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 03/18] config: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 01/18] builtin: introduce startup_info struct Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 02/18] builtin: Support RUN_SETUP_GENTLY to set up repository early if found Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 04/18] hash-object: " Nguyễn Thái Ngọc Duy
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/config.c |    6 ++----
 git.c            |    4 ++--
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/builtin/config.c b/builtin/config.c
index 4bc46b1..ecc8f87 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -326,11 +326,9 @@ static int get_colorbool(int print)
 		return get_colorbool_found ? 0 : 1;
 }
 
-int cmd_config(int argc, const char **argv, const char *unused_prefix)
+int cmd_config(int argc, const char **argv, const char *prefix)
 {
-	int nongit;
 	char *value;
-	const char *prefix = setup_git_directory_gently(&nongit);
 
 	config_exclusive_filename = getenv(CONFIG_ENVIRONMENT);
 
@@ -409,7 +407,7 @@ int cmd_config(int argc, const char **argv, const char *unused_prefix)
 	}
 	else if (actions == ACTION_EDIT) {
 		check_argc(argc, 0, 0);
-		if (!config_exclusive_filename && nongit)
+		if (!config_exclusive_filename && !startup_info->have_repository)
 			die("not in a git directory");
 		git_config(git_default_config, NULL);
 		launch_editor(config_exclusive_filename ?
diff --git a/git.c b/git.c
index 9e0e2d0..4c99319 100644
--- a/git.c
+++ b/git.c
@@ -309,7 +309,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "clean", cmd_clean, RUN_SETUP | NEED_WORK_TREE },
 		{ "commit", cmd_commit, RUN_SETUP | NEED_WORK_TREE },
 		{ "commit-tree", cmd_commit_tree, RUN_SETUP },
-		{ "config", cmd_config },
+		{ "config", cmd_config, RUN_SETUP_GENTLY },
 		{ "count-objects", cmd_count_objects, RUN_SETUP },
 		{ "describe", cmd_describe, RUN_SETUP },
 		{ "diff", cmd_diff },
@@ -366,7 +366,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "reflog", cmd_reflog, RUN_SETUP },
 		{ "remote", cmd_remote, RUN_SETUP },
 		{ "replace", cmd_replace, RUN_SETUP },
-		{ "repo-config", cmd_config },
+		{ "repo-config", cmd_config, RUN_SETUP_GENTLY },
 		{ "rerere", cmd_rerere, RUN_SETUP },
 		{ "reset", cmd_reset, RUN_SETUP },
 		{ "rev-list", cmd_rev_list, RUN_SETUP },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 04/18] hash-object: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (2 preceding siblings ...)
  2010-03-07  4:55 ` [PATCH 03/18] config: use RUN_SETUP_GENTLY Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 05/18] shortlog: " Nguyễn Thái Ngọc Duy
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

hash-object needs to inspect repository's config, so it must try to
find a repository regardless the object will be written in object
store.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/hash-object.c |    9 +++++----
 git.c                 |    2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/builtin/hash-object.c b/builtin/hash-object.c
index 6a5f5b5..57330b8 100644
--- a/builtin/hash-object.c
+++ b/builtin/hash-object.c
@@ -76,7 +76,7 @@ static const struct option hash_object_options[] = {
 int cmd_hash_object(int argc, const char **argv, const char *prefix)
 {
 	int i;
-	int prefix_length = -1;
+	int prefix_length;
 	const char *errstr = NULL;
 
 	type = blob_type;
@@ -84,9 +84,10 @@ int cmd_hash_object(int argc, const char **argv, const char *prefix)
 	argc = parse_options(argc, argv, NULL, hash_object_options,
 			     hash_object_usage, 0);
 
+	prefix_length = prefix ? strlen(prefix) : 0;
 	if (write_object) {
-		prefix = setup_git_directory();
-		prefix_length = prefix ? strlen(prefix) : 0;
+		if (!startup_info->have_repository)
+			die("No repository found");
 		if (vpath && prefix)
 			vpath = prefix_filename(prefix, prefix_length, vpath);
 	}
@@ -121,7 +122,7 @@ int cmd_hash_object(int argc, const char **argv, const char *prefix)
 	for (i = 0 ; i < argc; i++) {
 		const char *arg = argv[i];
 
-		if (0 <= prefix_length)
+		if (prefix_length)
 			arg = prefix_filename(prefix, prefix_length, arg);
 		hash_object(arg, type, write_object,
 			    no_filters ? NULL : vpath ? vpath : arg);
diff --git a/git.c b/git.c
index 4c99319..2069ef3 100644
--- a/git.c
+++ b/git.c
@@ -327,7 +327,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "gc", cmd_gc, RUN_SETUP },
 		{ "get-tar-commit-id", cmd_get_tar_commit_id },
 		{ "grep", cmd_grep, USE_PAGER },
-		{ "hash-object", cmd_hash_object },
+		{ "hash-object", cmd_hash_object, RUN_SETUP_GENTLY },
 		{ "help", cmd_help },
 		{ "index-pack", cmd_index_pack },
 		{ "init", cmd_init_db },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 05/18] shortlog: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (3 preceding siblings ...)
  2010-03-07  4:55 ` [PATCH 04/18] hash-object: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 06/18] grep: " Nguyễn Thái Ngọc Duy
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

shortlog has USE_PAGER set. setup_pager() may read config even
setup_git_dir* is not run yet. This tries to find a repository before
the config is read.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/shortlog.c |    4 +---
 git.c              |    2 +-
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index 06320f5..bdf3402 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -249,7 +249,6 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
 {
 	static struct shortlog log;
 	static struct rev_info rev;
-	int nongit;
 
 	static const struct option options[] = {
 		OPT_BOOLEAN('n', "numbered", &log.sort_by_number,
@@ -265,7 +264,6 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
 
 	struct parse_opt_ctx_t ctx;
 
-	prefix = setup_git_directory_gently(&nongit);
 	git_config(git_default_config, NULL);
 	shortlog_init(&log);
 	init_revisions(&rev, prefix);
@@ -292,7 +290,7 @@ parse_done:
 	log.user_format = rev.commit_format == CMIT_FMT_USERFORMAT;
 
 	/* assume HEAD if from a tty */
-	if (!nongit && !rev.pending.nr && isatty(0))
+	if (startup_info->have_repository && !rev.pending.nr && isatty(0))
 		add_head_to_pending(&rev);
 	if (rev.pending.nr == 0) {
 		if (isatty(0))
diff --git a/git.c b/git.c
index 2069ef3..29489e6 100644
--- a/git.c
+++ b/git.c
@@ -374,7 +374,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "revert", cmd_revert, RUN_SETUP | NEED_WORK_TREE },
 		{ "rm", cmd_rm, RUN_SETUP },
 		{ "send-pack", cmd_send_pack, RUN_SETUP },
-		{ "shortlog", cmd_shortlog, USE_PAGER },
+		{ "shortlog", cmd_shortlog, RUN_SETUP_GENTLY | USE_PAGER },
 		{ "show-branch", cmd_show_branch, RUN_SETUP },
 		{ "show", cmd_show, RUN_SETUP | USE_PAGER },
 		{ "status", cmd_status, RUN_SETUP | NEED_WORK_TREE },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 06/18] grep: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (4 preceding siblings ...)
  2010-03-07  4:55 ` [PATCH 05/18] shortlog: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 07/18] builtin: USE_PAGER should not be used without RUN_SETUP* Nguyễn Thái Ngọc Duy
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

grep has USE_PAGER set. setup_pager() may read config even
setup_git_dir* is not run yet. This tries to find a repository before
config is read.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/grep.c |    9 +++------
 git.c          |    2 +-
 2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/builtin/grep.c b/builtin/grep.c
index 40b9a93..fb82ff8 100644
--- a/builtin/grep.c
+++ b/builtin/grep.c
@@ -765,7 +765,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
 	const char **paths = NULL;
 	int i;
 	int dummy;
-	int nongit = 0, use_index = 1;
+	int use_index = 1;
 	struct option options[] = {
 		OPT_BOOLEAN(0, "cached", &cached,
 			"search in index instead of in the work tree"),
@@ -853,8 +853,6 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
 		OPT_END()
 	};
 
-	prefix = setup_git_directory_gently(&nongit);
-
 	/*
 	 * 'git grep -h', unlike 'git grep -h <pattern>', is a request
 	 * to show usage information and exit.
@@ -893,9 +891,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
 			     PARSE_OPT_STOP_AT_NON_OPTION |
 			     PARSE_OPT_NO_INTERNAL_HELP);
 
-	if (use_index && nongit)
-		/* die the same way as if we did it at the beginning */
-		setup_git_directory();
+	if (use_index && !startup_info->have_repository)
+		die("No git repository found");
 
 	/*
 	 * skip a -- separator; we know it cannot be
diff --git a/git.c b/git.c
index 29489e6..3904fe2 100644
--- a/git.c
+++ b/git.c
@@ -326,7 +326,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "fsck-objects", cmd_fsck, RUN_SETUP },
 		{ "gc", cmd_gc, RUN_SETUP },
 		{ "get-tar-commit-id", cmd_get_tar_commit_id },
-		{ "grep", cmd_grep, USE_PAGER },
+		{ "grep", cmd_grep, RUN_SETUP_GENTLY | USE_PAGER },
 		{ "hash-object", cmd_hash_object, RUN_SETUP_GENTLY },
 		{ "help", cmd_help },
 		{ "index-pack", cmd_index_pack },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 07/18] builtin: USE_PAGER should not be used without RUN_SETUP*
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (5 preceding siblings ...)
  2010-03-07  4:55 ` [PATCH 06/18] grep: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 08/18] archive: use RUN_SETUP_GENTLY Nguyễn Thái Ngọc Duy
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

USE_PAGER may need core.pager from repository. So a repository search
should be done before core.pager is read.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 git.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/git.c b/git.c
index 3904fe2..84dd78e 100644
--- a/git.c
+++ b/git.c
@@ -253,8 +253,11 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
 
 		if (use_pager == -1 && p->option & RUN_SETUP)
 			use_pager = check_pager_config(p->cmd);
-		if (use_pager == -1 && p->option & USE_PAGER)
+		if (use_pager == -1 && p->option & USE_PAGER) {
+			if ((p->option & (RUN_SETUP | RUN_SETUP_GENTLY)) == 0)
+				die("Internal error: USE_PAGER must be together with RUN_SETUP*");
 			use_pager = 1;
+		}
 	}
 	commit_pager_choice();
 
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 08/18] archive: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (6 preceding siblings ...)
  2010-03-07  4:55 ` [PATCH 07/18] builtin: USE_PAGER should not be used without RUN_SETUP* Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 09/18] mailinfo: " Nguyễn Thái Ngọc Duy
                   ` (9 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/archive.c |    2 +-
 git.c             |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/builtin/archive.c b/builtin/archive.c
index 6a887f5..ef0bef8 100644
--- a/builtin/archive.c
+++ b/builtin/archive.c
@@ -125,5 +125,5 @@ int cmd_archive(int argc, const char **argv, const char *prefix)
 
 	setvbuf(stderr, NULL, _IOLBF, BUFSIZ);
 
-	return write_archive(argc, argv, prefix, 1);
+	return write_archive(argc, argv, prefix, 0);
 }
diff --git a/git.c b/git.c
index 84dd78e..2b59f06 100644
--- a/git.c
+++ b/git.c
@@ -295,7 +295,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "stage", cmd_add, RUN_SETUP | NEED_WORK_TREE },
 		{ "annotate", cmd_annotate, RUN_SETUP },
 		{ "apply", cmd_apply },
-		{ "archive", cmd_archive },
+		{ "archive", cmd_archive, RUN_SETUP_GENTLY },
 		{ "bisect--helper", cmd_bisect__helper, RUN_SETUP | NEED_WORK_TREE },
 		{ "blame", cmd_blame, RUN_SETUP },
 		{ "branch", cmd_branch, RUN_SETUP },
@@ -384,7 +384,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "stripspace", cmd_stripspace },
 		{ "symbolic-ref", cmd_symbolic_ref, RUN_SETUP },
 		{ "tag", cmd_tag, RUN_SETUP },
-		{ "tar-tree", cmd_tar_tree },
+		{ "tar-tree", cmd_tar_tree, RUN_SETUP_GENTLY },
 		{ "unpack-file", cmd_unpack_file, RUN_SETUP },
 		{ "unpack-objects", cmd_unpack_objects, RUN_SETUP },
 		{ "update-index", cmd_update_index, RUN_SETUP },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 09/18] mailinfo: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (7 preceding siblings ...)
  2010-03-07  4:55 ` [PATCH 08/18] archive: use RUN_SETUP_GENTLY Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:55 ` [PATCH 10/18] check-ref-format: " Nguyễn Thái Ngọc Duy
                   ` (8 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

mailinfo may use repo config, so setup gitdir first.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/mailinfo.c |    3 ---
 git.c              |    2 +-
 2 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c
index ce2ef6b..3d2c650 100644
--- a/builtin/mailinfo.c
+++ b/builtin/mailinfo.c
@@ -1026,9 +1026,6 @@ int cmd_mailinfo(int argc, const char **argv, const char *prefix)
 {
 	const char *def_charset;
 
-	/* NEEDSWORK: might want to do the optional .git/ directory
-	 * discovery
-	 */
 	git_config(git_mailinfo_config, NULL);
 
 	def_charset = (git_commit_encoding ? git_commit_encoding : "UTF-8");
diff --git a/git.c b/git.c
index 2b59f06..326f7c7 100644
--- a/git.c
+++ b/git.c
@@ -339,7 +339,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "ls-files", cmd_ls_files, RUN_SETUP },
 		{ "ls-tree", cmd_ls_tree, RUN_SETUP },
 		{ "ls-remote", cmd_ls_remote },
-		{ "mailinfo", cmd_mailinfo },
+		{ "mailinfo", cmd_mailinfo, RUN_SETUP_GENTLY },
 		{ "mailsplit", cmd_mailsplit },
 		{ "merge", cmd_merge, RUN_SETUP | NEED_WORK_TREE },
 		{ "merge-base", cmd_merge_base, RUN_SETUP },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 10/18] check-ref-format: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (8 preceding siblings ...)
  2010-03-07  4:55 ` [PATCH 09/18] mailinfo: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:55 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:56 ` [PATCH 11/18] verify-pack: " Nguyễn Thái Ngọc Duy
                   ` (7 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:55 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

When --branch is used, check-ref-format will look into repository for
branch name. Therefore repository search is needed.

The call flow is:
 - cmd_check_ref_format
 - strbuf_check_branch_ref
 - strbuf_branchname
 - interpret_branch_name
 - branch_get
 - read_config
 - resolve_ref

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 git.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/git.c b/git.c
index 326f7c7..a8660f4 100644
--- a/git.c
+++ b/git.c
@@ -304,7 +304,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "checkout", cmd_checkout, RUN_SETUP | NEED_WORK_TREE },
 		{ "checkout-index", cmd_checkout_index,
 			RUN_SETUP | NEED_WORK_TREE},
-		{ "check-ref-format", cmd_check_ref_format },
+		{ "check-ref-format", cmd_check_ref_format, RUN_SETUP_GENTLY },
 		{ "check-attr", cmd_check_attr, RUN_SETUP },
 		{ "cherry", cmd_cherry, RUN_SETUP },
 		{ "cherry-pick", cmd_cherry_pick, RUN_SETUP | NEED_WORK_TREE },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 11/18] verify-pack: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (9 preceding siblings ...)
  2010-03-07  4:55 ` [PATCH 10/18] check-ref-format: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:56 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:56 ` [PATCH 12/18] apply: " Nguyễn Thái Ngọc Duy
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:56 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 git.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/git.c b/git.c
index a8660f4..0e052c8 100644
--- a/git.c
+++ b/git.c
@@ -396,7 +396,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "version", cmd_version },
 		{ "whatchanged", cmd_whatchanged, RUN_SETUP | USE_PAGER },
 		{ "write-tree", cmd_write_tree, RUN_SETUP },
-		{ "verify-pack", cmd_verify_pack },
+		{ "verify-pack", cmd_verify_pack, RUN_SETUP_GENTLY },
 		{ "show-ref", cmd_show_ref, RUN_SETUP },
 		{ "pack-refs", cmd_pack_refs, RUN_SETUP },
 	};
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 12/18] apply: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (10 preceding siblings ...)
  2010-03-07  4:56 ` [PATCH 11/18] verify-pack: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:56 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:56 ` [PATCH 13/18] bundle: " Nguyễn Thái Ngọc Duy
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:56 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/apply.c |    7 +++----
 git.c           |    2 +-
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/builtin/apply.c b/builtin/apply.c
index 3af4ae0..d27aac6 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -3516,7 +3516,6 @@ int cmd_apply(int argc, const char **argv, const char *unused_prefix)
 {
 	int i;
 	int errs = 0;
-	int is_not_gitdir;
 	int binary;
 	int force_apply = 0;
 
@@ -3589,7 +3588,7 @@ int cmd_apply(int argc, const char **argv, const char *unused_prefix)
 		OPT_END()
 	};
 
-	prefix = setup_git_directory_gently(&is_not_gitdir);
+	prefix = startup_info->prefix;
 	prefix_length = prefix ? strlen(prefix) : 0;
 	git_config(git_apply_config, NULL);
 	if (apply_default_whitespace)
@@ -3604,10 +3603,10 @@ int cmd_apply(int argc, const char **argv, const char *unused_prefix)
 		apply = apply_verbosely = 1;
 	if (!force_apply && (diffstat || numstat || summary || check || fake_ancestor))
 		apply = 0;
-	if (check_index && is_not_gitdir)
+	if (check_index && !startup_info->have_repository)
 		die("--index outside a repository");
 	if (cached) {
-		if (is_not_gitdir)
+		if (!startup_info->have_repository)
 			die("--cached outside a repository");
 		check_index = 1;
 	}
diff --git a/git.c b/git.c
index 0e052c8..7820d22 100644
--- a/git.c
+++ b/git.c
@@ -294,7 +294,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "add", cmd_add, RUN_SETUP | NEED_WORK_TREE },
 		{ "stage", cmd_add, RUN_SETUP | NEED_WORK_TREE },
 		{ "annotate", cmd_annotate, RUN_SETUP },
-		{ "apply", cmd_apply },
+		{ "apply", cmd_apply, RUN_SETUP_GENTLY },
 		{ "archive", cmd_archive, RUN_SETUP_GENTLY },
 		{ "bisect--helper", cmd_bisect__helper, RUN_SETUP | NEED_WORK_TREE },
 		{ "blame", cmd_blame, RUN_SETUP },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 13/18] bundle: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (11 preceding siblings ...)
  2010-03-07  4:56 ` [PATCH 12/18] apply: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:56 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:56 ` [PATCH 14/18] diff: " Nguyễn Thái Ngọc Duy
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:56 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/bundle.c |    6 ++----
 git.c            |    2 +-
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/builtin/bundle.c b/builtin/bundle.c
index 2006cc5..80649ba 100644
--- a/builtin/bundle.c
+++ b/builtin/bundle.c
@@ -18,7 +18,6 @@ static const char builtin_bundle_usage[] =
 int cmd_bundle(int argc, const char **argv, const char *prefix)
 {
 	struct bundle_header header;
-	int nongit;
 	const char *cmd, *bundle_file;
 	int bundle_fd = -1;
 	char buffer[PATH_MAX];
@@ -31,7 +30,6 @@ int cmd_bundle(int argc, const char **argv, const char *prefix)
 	argc -= 2;
 	argv += 2;
 
-	prefix = setup_git_directory_gently(&nongit);
 	if (prefix && bundle_file[0] != '/') {
 		snprintf(buffer, sizeof(buffer), "%s/%s", prefix, bundle_file);
 		bundle_file = buffer;
@@ -54,11 +52,11 @@ int cmd_bundle(int argc, const char **argv, const char *prefix)
 		return !!list_bundle_refs(&header, argc, argv);
 	}
 	if (!strcmp(cmd, "create")) {
-		if (nongit)
+		if (!startup_info->have_repository)
 			die("Need a repository to create a bundle.");
 		return !!create_bundle(&header, bundle_file, argc, argv);
 	} else if (!strcmp(cmd, "unbundle")) {
-		if (nongit)
+		if (!startup_info->have_repository)
 			die("Need a repository to unbundle.");
 		return !!unbundle(&header, bundle_fd) ||
 			list_bundle_refs(&header, argc, argv);
diff --git a/git.c b/git.c
index 7820d22..a90e0c3 100644
--- a/git.c
+++ b/git.c
@@ -299,7 +299,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "bisect--helper", cmd_bisect__helper, RUN_SETUP | NEED_WORK_TREE },
 		{ "blame", cmd_blame, RUN_SETUP },
 		{ "branch", cmd_branch, RUN_SETUP },
-		{ "bundle", cmd_bundle },
+		{ "bundle", cmd_bundle, RUN_SETUP_GENTLY },
 		{ "cat-file", cmd_cat_file, RUN_SETUP },
 		{ "checkout", cmd_checkout, RUN_SETUP | NEED_WORK_TREE },
 		{ "checkout-index", cmd_checkout_index,
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 14/18] diff: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (12 preceding siblings ...)
  2010-03-07  4:56 ` [PATCH 13/18] bundle: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:56 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:56 ` [PATCH 15/18] help: " Nguyễn Thái Ngọc Duy
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:56 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/diff.c |    6 ++----
 git.c          |    2 +-
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/builtin/diff.c b/builtin/diff.c
index ffcdd05..e4bd855 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -252,7 +252,6 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
 	int ents = 0, blobs = 0, paths = 0;
 	const char *path = NULL;
 	struct blobinfo blob[2];
-	int nongit;
 	int result = 0;
 
 	/*
@@ -278,7 +277,6 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
 	 * Other cases are errors.
 	 */
 
-	prefix = setup_git_directory_gently(&nongit);
 	git_config(git_diff_ui_config, NULL);
 
 	if (diff_use_color_default == -1)
@@ -287,7 +285,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
 	init_revisions(&rev, prefix);
 
 	/* If this is a no-index diff, just run it and exit there. */
-	diff_no_index(&rev, argc, argv, nongit, prefix);
+	diff_no_index(&rev, argc, argv, !startup_info->have_repository, prefix);
 
 	/* Otherwise, we are doing the usual "git" diff */
 	rev.diffopt.skip_stat_unmatch = !!diff_auto_refresh_index;
@@ -296,7 +294,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
 	DIFF_OPT_SET(&rev.diffopt, ALLOW_EXTERNAL);
 	DIFF_OPT_SET(&rev.diffopt, ALLOW_TEXTCONV);
 
-	if (nongit)
+	if (!startup_info->have_repository)
 		die("Not a git repository");
 	argc = setup_revisions(argc, argv, &rev, NULL);
 	if (!rev.diffopt.output_format) {
diff --git a/git.c b/git.c
index a90e0c3..02ba3b2 100644
--- a/git.c
+++ b/git.c
@@ -315,7 +315,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "config", cmd_config, RUN_SETUP_GENTLY },
 		{ "count-objects", cmd_count_objects, RUN_SETUP },
 		{ "describe", cmd_describe, RUN_SETUP },
-		{ "diff", cmd_diff },
+		{ "diff", cmd_diff, RUN_SETUP_GENTLY },
 		{ "diff-files", cmd_diff_files, RUN_SETUP | NEED_WORK_TREE },
 		{ "diff-index", cmd_diff_index, RUN_SETUP },
 		{ "diff-tree", cmd_diff_tree, RUN_SETUP },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 15/18] help: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (13 preceding siblings ...)
  2010-03-07  4:56 ` [PATCH 14/18] diff: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:56 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:56 ` [PATCH 16/18] ls-remote: " Nguyễn Thái Ngọc Duy
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:56 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/help.c |    2 --
 git.c          |    2 +-
 2 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/builtin/help.c b/builtin/help.c
index 3182a2b..4988629 100644
--- a/builtin/help.c
+++ b/builtin/help.c
@@ -414,7 +414,6 @@ static void show_html_page(const char *git_cmd)
 
 int cmd_help(int argc, const char **argv, const char *prefix)
 {
-	int nongit;
 	const char *alias;
 	enum help_format parsed_help_format;
 	load_command_list("git-", &main_cmds, &other_cmds);
@@ -437,7 +436,6 @@ int cmd_help(int argc, const char **argv, const char *prefix)
 		return 0;
 	}
 
-	setup_git_directory_gently(&nongit);
 	git_config(git_help_config, NULL);
 
 	if (parsed_help_format != HELP_FORMAT_NONE)
diff --git a/git.c b/git.c
index 02ba3b2..6a29756 100644
--- a/git.c
+++ b/git.c
@@ -331,7 +331,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "get-tar-commit-id", cmd_get_tar_commit_id },
 		{ "grep", cmd_grep, RUN_SETUP_GENTLY | USE_PAGER },
 		{ "hash-object", cmd_hash_object, RUN_SETUP_GENTLY },
-		{ "help", cmd_help },
+		{ "help", cmd_help, RUN_SETUP_GENTLY },
 		{ "index-pack", cmd_index_pack },
 		{ "init", cmd_init_db },
 		{ "init-db", cmd_init_db },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 16/18] ls-remote: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (14 preceding siblings ...)
  2010-03-07  4:56 ` [PATCH 15/18] help: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:56 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:56 ` [PATCH 17/18] var: " Nguyễn Thái Ngọc Duy
  2010-03-07  4:56 ` [PATCH 18/18] merge-file: " Nguyễn Thái Ngọc Duy
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:56 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/ls-remote.c |    3 ---
 git.c               |    4 ++--
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c
index 70f5622..998f2c8 100644
--- a/builtin/ls-remote.c
+++ b/builtin/ls-remote.c
@@ -31,7 +31,6 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
 {
 	int i;
 	const char *dest = NULL;
-	int nongit;
 	unsigned flags = 0;
 	const char *uploadpack = NULL;
 	const char **pattern = NULL;
@@ -40,8 +39,6 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
 	struct transport *transport;
 	const struct ref *ref;
 
-	setup_git_directory_gently(&nongit);
-
 	for (i = 1; i < argc; i++) {
 		const char *arg = argv[i];
 
diff --git a/git.c b/git.c
index 6a29756..e0c8904 100644
--- a/git.c
+++ b/git.c
@@ -338,7 +338,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "log", cmd_log, RUN_SETUP | USE_PAGER },
 		{ "ls-files", cmd_ls_files, RUN_SETUP },
 		{ "ls-tree", cmd_ls_tree, RUN_SETUP },
-		{ "ls-remote", cmd_ls_remote },
+		{ "ls-remote", cmd_ls_remote, RUN_SETUP_GENTLY },
 		{ "mailinfo", cmd_mailinfo, RUN_SETUP_GENTLY },
 		{ "mailsplit", cmd_mailsplit },
 		{ "merge", cmd_merge, RUN_SETUP | NEED_WORK_TREE },
@@ -359,7 +359,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "pack-objects", cmd_pack_objects, RUN_SETUP },
 		{ "pack-redundant", cmd_pack_redundant, RUN_SETUP },
 		{ "patch-id", cmd_patch_id },
-		{ "peek-remote", cmd_ls_remote },
+		{ "peek-remote", cmd_ls_remote, RUN_SETUP_GENTLY },
 		{ "pickaxe", cmd_blame, RUN_SETUP },
 		{ "prune", cmd_prune, RUN_SETUP },
 		{ "prune-packed", cmd_prune_packed, RUN_SETUP },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 17/18] var: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (15 preceding siblings ...)
  2010-03-07  4:56 ` [PATCH 16/18] ls-remote: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:56 ` Nguyễn Thái Ngọc Duy
  2010-03-07  4:56 ` [PATCH 18/18] merge-file: " Nguyễn Thái Ngọc Duy
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:56 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy

"git var" needs to read repository config, so setup gitdir first.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/var.c |    2 --
 git.c         |    2 +-
 2 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/builtin/var.c b/builtin/var.c
index 70fdb4d..26324ef 100644
--- a/builtin/var.c
+++ b/builtin/var.c
@@ -75,12 +75,10 @@ static int show_config(const char *var, const char *value, void *cb)
 int cmd_var(int argc, const char **argv, const char *prefix)
 {
 	const char *val;
-	int nongit;
 	if (argc != 2) {
 		usage(var_usage);
 	}
 
-	setup_git_directory_gently(&nongit);
 	val = NULL;
 
 	if (strcmp(argv[1], "-l") == 0) {
diff --git a/git.c b/git.c
index e0c8904..3292627 100644
--- a/git.c
+++ b/git.c
@@ -391,7 +391,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "update-ref", cmd_update_ref, RUN_SETUP },
 		{ "update-server-info", cmd_update_server_info, RUN_SETUP },
 		{ "upload-archive", cmd_upload_archive },
-		{ "var", cmd_var },
+		{ "var", cmd_var, RUN_SETUP_GENTLY },
 		{ "verify-tag", cmd_verify_tag, RUN_SETUP },
 		{ "version", cmd_version },
 		{ "whatchanged", cmd_whatchanged, RUN_SETUP | USE_PAGER },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 18/18] merge-file: use RUN_SETUP_GENTLY
  2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
                   ` (16 preceding siblings ...)
  2010-03-07  4:56 ` [PATCH 17/18] var: " Nguyễn Thái Ngọc Duy
@ 2010-03-07  4:56 ` Nguyễn Thái Ngọc Duy
  17 siblings, 0 replies; 19+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-03-07  4:56 UTC (permalink / raw)
  To: git; +Cc: Nguyễn Thái Ngọc Duy


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin/merge-file.c |    4 +---
 git.c                |    2 +-
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/builtin/merge-file.c b/builtin/merge-file.c
index 1e70073..474c6c2 100644
--- a/builtin/merge-file.c
+++ b/builtin/merge-file.c
@@ -30,7 +30,6 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix)
 	int level = XDL_MERGE_ZEALOUS_ALNUM;
 	int style = 0, quiet = 0;
 	int favor = 0;
-	int nongit;
 
 	struct option options[] = {
 		OPT_BOOLEAN('p', "stdout", &to_stdout, "send results to standard output"),
@@ -45,8 +44,7 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix)
 		OPT_END(),
 	};
 
-	prefix = setup_git_directory_gently(&nongit);
-	if (!nongit) {
+	if (startup_info->have_repository) {
 		/* Read the configuration file */
 		git_config(git_xmerge_config, NULL);
 		if (0 <= git_xmerge_style)
diff --git a/git.c b/git.c
index 3292627..88408c8 100644
--- a/git.c
+++ b/git.c
@@ -343,7 +343,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "mailsplit", cmd_mailsplit },
 		{ "merge", cmd_merge, RUN_SETUP | NEED_WORK_TREE },
 		{ "merge-base", cmd_merge_base, RUN_SETUP },
-		{ "merge-file", cmd_merge_file },
+		{ "merge-file", cmd_merge_file, RUN_SETUP_GENTLY },
 		{ "merge-index", cmd_merge_index, RUN_SETUP },
 		{ "merge-ours", cmd_merge_ours, RUN_SETUP },
 		{ "merge-recursive", cmd_merge_recursive, RUN_SETUP | NEED_WORK_TREE },
-- 
1.7.0.195.g637a2

^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2010-03-07  5:07 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-07  4:55 [PATCH 00/18] Search and set up repository early for builtin commands Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 01/18] builtin: introduce startup_info struct Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 02/18] builtin: Support RUN_SETUP_GENTLY to set up repository early if found Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 03/18] config: use RUN_SETUP_GENTLY Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 04/18] hash-object: " Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 05/18] shortlog: " Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 06/18] grep: " Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 07/18] builtin: USE_PAGER should not be used without RUN_SETUP* Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 08/18] archive: use RUN_SETUP_GENTLY Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 09/18] mailinfo: " Nguyễn Thái Ngọc Duy
2010-03-07  4:55 ` [PATCH 10/18] check-ref-format: " Nguyễn Thái Ngọc Duy
2010-03-07  4:56 ` [PATCH 11/18] verify-pack: " Nguyễn Thái Ngọc Duy
2010-03-07  4:56 ` [PATCH 12/18] apply: " Nguyễn Thái Ngọc Duy
2010-03-07  4:56 ` [PATCH 13/18] bundle: " Nguyễn Thái Ngọc Duy
2010-03-07  4:56 ` [PATCH 14/18] diff: " Nguyễn Thái Ngọc Duy
2010-03-07  4:56 ` [PATCH 15/18] help: " Nguyễn Thái Ngọc Duy
2010-03-07  4:56 ` [PATCH 16/18] ls-remote: " Nguyễn Thái Ngọc Duy
2010-03-07  4:56 ` [PATCH 17/18] var: " Nguyễn Thái Ngọc Duy
2010-03-07  4:56 ` [PATCH 18/18] merge-file: " Nguyễn Thái Ngọc Duy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).