All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH 01/18] builtin: introduce startup_info struct
Date: Sun,  7 Mar 2010 11:55:50 +0700	[thread overview]
Message-ID: <1267937767-12504-2-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1267937767-12504-1-git-send-email-pclouds@gmail.com>

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

  reply	other threads:[~2010-03-07  4:59 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1267937767-12504-2-git-send-email-pclouds@gmail.com \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.