* [WIP PATCH 00/26] Git setup cleanup series
@ 2010-02-16 16:04 Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 01/26] rev-parse --git-dir: print relative gitdir correctly Nguyễn Thái Ngọc Duy
` (25 more replies)
0 siblings, 26 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:04 UTC (permalink / raw)
To: git; +Cc: Nguyễn Thái Ngọc Duy
This is the result of my "Remove .git auto detection from setup_git_env()"
patch [1]. Basically I make git behave differently (and correctly) when
GIT_HARDENED_SETUP=1 to smooth out the migration from the current messy setup
to a less messy setup. Eventually GIT_HARDENED_SETUP should be enabled by
default and the obsolete code removed, but we're far away from that.
Summary of changes:
- startup_info struct is added to help move up setup_git_directory_gently()
to run_builtin(), which reduces lots of headache.
- GIT_HARDENED_SETUP=1 will make git die() whenever setup_git_env() is called
from anywhere but setup_git_dir*. It also creates lots of segfault because
get_git_dir() and friends now can return NULL.
- gitattr, gitexcludes will not access repository if there is no repository
- enter_repo() will use setup_git_dir* to do the setup
- because non-builtin commands do not have startup_info, they will behave
just like before. I'll need to look at them.
Tests are lacking. But you can just try "GIT_HARDENED_SETUP=1 make test"
after 04/26, then again at the end of the series to see the difference.
It'd be great if people see new failing tests. I'm not sure I have caught
them all.
[1] http://mid.gmane.org/1265370468-6147-1-git-send-email-pclouds@gmail.com
Nguyễn Thái Ngọc Duy (26):
rev-parse --git-dir: print relative gitdir correctly
setup_git_directory*: Explicitly set git dir
Save setup_git_dir* info globally for later use
Add GIT_HARDENED_SETUP to detect gitdir/worktree related mis-setup errors
enter_repo(): use setup_git_directory_gently internally
Tweak init/clone to work properly with GIT_HARDENED_SETUP=1
Support running setup_git_dir_gently() from the beginning for builtin commands
config: move up gitdir setup to run_builtin()
hash-object: move gitdir setup to run_builtin()
shortlog: move up gitdir setup to run_builtin()
Do not look for .git/info/exclude when gitdir is not set up
grep: move up gitdir setup to run_builtin()
USE_PAGER should not be used without RUN_SETUP*
Do not try to read $GIT_DIR/info/attributes if there is no repository
archive: move up gitdir setup to run_builtin()
mailinfo: move up gitdir setup to run_builtin()
check-ref-format: setup gitdir gently
verify-pack: set up gitdir gently
apply: move up gitdir setup to run_builtin()
bundle: move up gitdir setup to run_builtin()
diff: move up gitdir setup to run_builtin()
help: move up gitdir setup to run_builtin()
ls-remote: move up gitdir setup to run_builtin()
var: move up gitdir setup to run_builtin()
merge-file: move up gitdir setup to run_builtin()
Turn on GIT_HARDENED_SETUP for the whole test suite
attr.c | 5 ++-
builtin-apply.c | 13 +++----
builtin-archive.c | 2 +-
builtin-bundle.c | 6 +--
builtin-config.c | 12 +++---
builtin-diff.c | 6 +--
builtin-grep.c | 9 ++---
builtin-hash-object.c | 9 +++--
builtin-help.c | 2 -
builtin-init-db.c | 4 ++
builtin-ls-remote.c | 3 --
builtin-mailinfo.c | 3 --
builtin-merge-file.c | 4 +--
builtin-rev-parse.c | 8 ++++
builtin-shortlog.c | 4 +--
builtin-var.c | 2 -
cache.h | 8 ++++
config.c | 17 ++++++---
dir.c | 8 +++--
environment.c | 43 +++++++++++++++++-----
git.c | 88 +++++++++++++++++++++++++++++++----------------
path.c | 8 ++---
setup.c | 48 ++++++++++++++++++++------
t/t0024-crlf-archive.sh | 1 +
t/t1302-repo-version.sh | 2 +-
t/test-lib.sh | 3 ++
26 files changed, 204 insertions(+), 114 deletions(-)
^ permalink raw reply [flat|nested] 27+ messages in thread
* [WIP PATCH 01/26] rev-parse --git-dir: print relative gitdir correctly
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:04 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 02/26] setup_git_directory*: Explicitly set git dir Nguyễn Thái Ngọc Duy
` (24 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:04 UTC (permalink / raw)
To: git; +Cc: Nguyễn Thái Ngọc Duy
When git_dir is relative, it is relative to Git's current working
directory, which is worktree top directory. "git rev-parse --git-dir"
is expected to output relative to user's current working directory.
Catch this case and make gitdir absolute (the easy way).
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
This one is probably not needed for now. In my later patches, set_git_dir()
is used more, and this becomes necessary.
builtin-rev-parse.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c
index a8c5043..a054256 100644
--- a/builtin-rev-parse.c
+++ b/builtin-rev-parse.c
@@ -638,6 +638,14 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
const char *gitdir = getenv(GIT_DIR_ENVIRONMENT);
static char cwd[PATH_MAX];
if (gitdir) {
+ if (prefix && !is_absolute_path(gitdir)) {
+ int len;
+ if (!getcwd(cwd, PATH_MAX))
+ die_errno("unable to get current working directory");
+ len = strlen(cwd);
+ printf("%s%s%s\n", cwd, len && cwd[len-1] != '/' ? "/" : "", gitdir);
+ continue;
+ }
puts(gitdir);
continue;
}
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 02/26] setup_git_directory*: Explicitly set git dir
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 01/26] rev-parse --git-dir: print relative gitdir correctly Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:04 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 03/26] Save setup_git_dir* info globally for later use Nguyễn Thái Ngọc Duy
` (23 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:04 UTC (permalink / raw)
To: git; +Cc: Nguyễn Thái Ngọc Duy
If setup_git_directory_gently() and its callers do not set gitdir
now, it will be eventually set by setup_git_env(), through obscure
call chain. One of the indirect call site is git_config().
My goal is to remove gitdir auto detection in setup_git_env(). So
the first step is not depend on that behavior.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
setup.c | 34 +++++++++++++++++++++++-----------
1 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/setup.c b/setup.c
index b38cbee..183bcf6 100644
--- a/setup.c
+++ b/setup.c
@@ -313,8 +313,12 @@ 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.
+ *
+ * After this function is finished, set_git_dir() must be called if a
+ * a repository is found. Repo format will be checked later by
+ * setup_git_directory_gently()
*/
-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);
@@ -345,18 +349,17 @@ const char *setup_git_directory_gently(int *nongit_ok)
const char *retval;
if (!work_tree_env) {
+ /* core.worktree may override worktree */
retval = set_work_tree(gitdirenv);
- /* config may override worktree */
- if (check_repository_format_gently(nongit_ok))
- return NULL;
+ set_git_dir(gitdirenv);
return retval;
}
- if (check_repository_format_gently(nongit_ok))
- return NULL;
retval = get_relative_cwd(buffer, sizeof(buffer) - 1,
get_git_work_tree());
- if (!retval || !*retval)
+ if (!retval || !*retval) {
+ set_git_dir(gitdirenv);
return NULL;
+ }
set_git_dir(make_absolute_path(gitdirenv));
if (chdir(work_tree_env) < 0)
die_errno ("Could not chdir to '%s'", work_tree_env);
@@ -396,8 +399,10 @@ const char *setup_git_directory_gently(int *nongit_ok)
die("Repository setup failed");
break;
}
- if (is_git_directory(DEFAULT_GIT_DIR_ENVIRONMENT))
+ if (is_git_directory(DEFAULT_GIT_DIR_ENVIRONMENT)) {
+ set_git_dir(DEFAULT_GIT_DIR_ENVIRONMENT);
break;
+ }
if (is_git_directory(".")) {
inside_git_dir = 1;
if (!work_tree_env)
@@ -407,7 +412,6 @@ const char *setup_git_directory_gently(int *nongit_ok)
set_git_dir(cwd);
} else
set_git_dir(".");
- check_repository_format_gently(nongit_ok);
return NULL;
}
while (--offset > ceil_offset && cwd[offset] != '/');
@@ -428,8 +432,6 @@ const char *setup_git_directory_gently(int *nongit_ok)
if (!work_tree_env)
inside_work_tree = 1;
git_work_tree_cfg = xstrndup(cwd, offset);
- if (check_repository_format_gently(nongit_ok))
- return NULL;
if (offset == len)
return NULL;
@@ -440,6 +442,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 (!nongit_ok || (!*nongit_ok && check_repository_format_gently(nongit_ok)))
+ prefix = NULL;
+ 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] 27+ messages in thread
* [WIP PATCH 03/26] Save setup_git_dir* info globally for later use
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 01/26] rev-parse --git-dir: print relative gitdir correctly Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 02/26] setup_git_directory*: Explicitly set git dir Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:04 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 04/26] Add GIT_HARDENED_SETUP to detect gitdir/worktree related mis-setup errors Nguyễn Thái Ngọc Duy
` (22 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:04 UTC (permalink / raw)
To: git; +Cc: Nguyễn Thái Ngọc Duy
For one thing, this could help catching setup_git_dir being run twice,
which is usually wrong.
This also helps moving up setup_git_dir* from inside builtin commands
to handle_internal_command(). Without this, run_builtin()
needs to find another way to pass "nongit_ok" to builtin commands.
The main program has to intialize startup_info pointer properly. For
builtin commands, git.c will take care of that. If startup_info is
NULL, the prior behavior should apply.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
Could have save the command name in startup_info too, so error
messages are clearer..
cache.h | 8 ++++++++
environment.c | 1 +
git.c | 31 +++++++++++++++++++++++--------
setup.c | 14 +++++++++++++-
4 files changed, 45 insertions(+), 9 deletions(-)
diff --git a/cache.h b/cache.h
index d478eff..fcbed37 100644
--- a/cache.h
+++ b/cache.h
@@ -1040,4 +1040,12 @@ 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;
+ int have_set_gitdir;
+ int have_repository;
+};
+extern struct startup_info *startup_info;
+
#endif /* CACHE_H */
diff --git a/environment.c b/environment.c
index 739ec27..1ab8815 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 b3e23f1..ea29cca 100644
--- a/git.c
+++ b/git.c
@@ -13,6 +13,8 @@ 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 opts;
+struct startup_info *startup_info;
static int use_pager = -1;
struct pager_config {
const char *cmd;
@@ -206,9 +208,6 @@ static int handle_alias(int *argcp, const char ***argv)
ret = 1;
}
- if (subdir && chdir(subdir))
- die_errno("Cannot change to '%s'", subdir);
-
errno = saved_errno;
return ret;
@@ -234,13 +233,26 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
{
int status, help;
struct stat st;
- const char *prefix;
- prefix = NULL;
help = argc == 2 && !strcmp(argv[1], "-h");
if (!help) {
- if (p->option & RUN_SETUP)
- prefix = setup_git_directory();
+ /* handle_alias() may have set up gitdir for alias lookup */
+ if (startup_info->have_set_gitdir) {
+ if (p->option & RUN_SETUP) {
+ if (!startup_info->have_repository)
+ die("No repository found");
+ }
+ else {
+ /* This is WRONG, but we can't get rid of it now */
+ startup_info->have_set_gitdir = 0;
+ if (startup_info->prefix && chdir(startup_info->prefix))
+ die("Cannot change to '%s'", startup_info->prefix);
+ }
+ }
+ else {
+ if (p->option & RUN_SETUP)
+ setup_git_directory();
+ }
if (use_pager == -1 && p->option & RUN_SETUP)
use_pager = check_pager_config(p->cmd);
@@ -254,7 +266,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;
@@ -473,6 +485,9 @@ int main(int argc, const char **argv)
{
const char *cmd;
+ startup_info = &opts;
+ memset(startup_info, 0, sizeof(*startup_info));
+
cmd = git_extract_argv0_path(argv[0]);
if (!cmd)
cmd = "git-help";
diff --git a/setup.c b/setup.c
index 183bcf6..0c05d36 100644
--- a/setup.c
+++ b/setup.c
@@ -236,7 +236,13 @@ void setup_work_tree(void)
git_dir = make_absolute_path(git_dir);
if (!work_tree || chdir(work_tree))
die("This operation must be run in a work tree");
+
+ /* we know gitdir is already set, we only adjust it to relative path */
+ if (startup_info)
+ startup_info->have_set_gitdir = 0;
set_git_dir(make_relative_path(git_dir, work_tree));
+ if (startup_info)
+ startup_info->have_set_gitdir = 1;
initialized = 1;
}
@@ -447,8 +453,14 @@ const char *setup_git_directory_gently(int *nongit_ok)
const char *prefix;
prefix = setup_git_directory_gently_1(nongit_ok);
- if (!nongit_ok || (!*nongit_ok && check_repository_format_gently(nongit_ok)))
+ if (startup_info)
+ startup_info->have_set_gitdir = 1;
+ if ((!nongit_ok || !*nongit_ok) && check_repository_format_gently(nongit_ok))
prefix = NULL;
+ 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] 27+ messages in thread
* [WIP PATCH 04/26] Add GIT_HARDENED_SETUP to detect gitdir/worktree related mis-setup errors
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (2 preceding siblings ...)
2010-02-16 16:04 ` [WIP PATCH 03/26] Save setup_git_dir* info globally for later use Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:04 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 05/26] enter_repo(): use setup_git_directory_gently internally Nguyễn Thái Ngọc Duy
` (21 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:04 UTC (permalink / raw)
To: git; +Cc: Nguyễn Thái Ngọc Duy
When GIT_DIR environment variable is not specified, .git will be
searched if a repository is needed. Currently this can be done in two
places: setup_git_directory_gently() and setup_git_env().
The one in setup_git_env() is no longer correct and should IMHO have
been removed since the introduction of setup_git_directory_gently() in
d288a70. Having two ways of auto detection may lead to obscure errors
because .git may be misdetected by setup_git_env(),
automatically called via git_path(), which is all over the place.
This patch makes setup_git_env() die if GIT_DIR is not explictly
set. That's setup_git_directory_gently()'s job. If you ever want to
touch things inside $GIT_DIR, you should have already called
setup_git_directory_gently().
However, doing that will break Git the hard way. So the die()ing
behavior will be only triggered if environment variable
GIT_HARDENED_SETUP is set. Otherwise old behavior remains. Once all
Git commands have been adapted to stay away from the old behavior, the
old code can be removed.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
config.c | 17 ++++++++++++-----
environment.c | 42 ++++++++++++++++++++++++++++++++----------
setup.c | 4 +++-
3 files changed, 47 insertions(+), 16 deletions(-)
diff --git a/config.c b/config.c
index 6963fbe..eee12b4 100644
--- a/config.c
+++ b/config.c
@@ -704,6 +704,7 @@ int git_config(config_fn_t fn, void *data)
int ret = 0, found = 0;
char *repo_config = NULL;
const char *home = NULL;
+ const char *hardened_setup = getenv("GIT_HARDENED_SETUP");
/* Setting $GIT_CONFIG makes git read _only_ the given config file. */
if (config_exclusive_filename)
@@ -724,12 +725,18 @@ int git_config(config_fn_t fn, void *data)
free(user_config);
}
- repo_config = git_pathdup("config");
- if (!access(repo_config, R_OK)) {
- ret += git_config_from_file(fn, repo_config, data);
- found += 1;
+ if (hardened_setup && !*hardened_setup)
+ hardened_setup = NULL;
+ if (hardened_setup && startup_info && !startup_info->have_set_gitdir)
+ die("Try to access a repository before properly setting it up");
+ if (!hardened_setup || !startup_info || startup_info->have_repository) {
+ repo_config = git_pathdup("config");
+ if (!access(repo_config, R_OK)) {
+ ret += git_config_from_file(fn, repo_config, data);
+ found += 1;
+ }
+ free(repo_config);
}
- free(repo_config);
if (found == 0)
return -1;
return ret;
diff --git a/environment.c b/environment.c
index 1ab8815..4795441 100644
--- a/environment.c
+++ b/environment.c
@@ -66,9 +66,19 @@ static char *git_object_dir, *git_index_file, *git_refs_dir, *git_graft_file;
static void setup_git_env(void)
{
+ const char *harden_setup = getenv("GIT_HARDENED_SETUP");
+
+ if (harden_setup && !*harden_setup)
+ harden_setup = NULL;
+
git_dir = getenv(GIT_DIR_ENVIRONMENT);
- if (!git_dir)
- git_dir = read_gitfile_gently(DEFAULT_GIT_DIR_ENVIRONMENT);
+ if (!git_dir) {
+ if (harden_setup)
+ die("GIT_DIR not properly set");
+ git_dir = read_gitfile_gently(DEFAULT_GIT_DIR_ENVIRONMENT);
+ }
+ if (harden_setup && startup_info && startup_info->have_set_gitdir)
+ die("internal error: setup_git_env can't be called twice");
if (!git_dir)
git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
git_object_dir = getenv(DB_ENVIRONMENT);
@@ -103,8 +113,11 @@ int have_git_dir(void)
const char *get_git_dir(void)
{
- if (!git_dir)
- setup_git_env();
+ if (!git_dir) {
+ const char *harden_setup = getenv("GIT_HARDENED_SETUP");
+ if (!harden_setup || !*harden_setup)
+ setup_git_env();
+ }
return git_dir;
}
@@ -146,22 +159,31 @@ const char *get_git_work_tree(void)
char *get_object_directory(void)
{
- if (!git_object_dir)
- setup_git_env();
+ if (!git_object_dir) {
+ const char *harden_setup = getenv("GIT_HARDENED_SETUP");
+ if (!harden_setup || !*harden_setup)
+ setup_git_env();
+ }
return git_object_dir;
}
char *get_index_file(void)
{
- if (!git_index_file)
- setup_git_env();
+ if (!git_index_file) {
+ const char *harden_setup = getenv("GIT_HARDENED_SETUP");
+ if (!harden_setup || !*harden_setup)
+ setup_git_env();
+ }
return git_index_file;
}
char *get_graft_file(void)
{
- if (!git_graft_file)
- setup_git_env();
+ if (!git_graft_file) {
+ const char *harden_setup = getenv("GIT_HARDENED_SETUP");
+ if (!harden_setup || !*harden_setup)
+ setup_git_env();
+ }
return git_graft_file;
}
diff --git a/setup.c b/setup.c
index 0c05d36..5c8777a 100644
--- a/setup.c
+++ b/setup.c
@@ -453,8 +453,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->have_set_gitdir = 1;
+ startup_info->have_repository = get_git_dir() != NULL;
+ }
if ((!nongit_ok || !*nongit_ok) && check_repository_format_gently(nongit_ok))
prefix = NULL;
if (startup_info) {
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 05/26] enter_repo(): use setup_git_directory_gently internally
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (3 preceding siblings ...)
2010-02-16 16:04 ` [WIP PATCH 04/26] Add GIT_HARDENED_SETUP to detect gitdir/worktree related mis-setup errors Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:04 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 06/26] Tweak init/clone to work properly with GIT_HARDENED_SETUP=1 Nguyễn Thái Ngọc Duy
` (20 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:04 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>
---
path.c | 8 +++-----
1 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/path.c b/path.c
index 0005df3..6a311d7 100644
--- a/path.c
+++ b/path.c
@@ -281,6 +281,7 @@ char *enter_repo(char *path, int strict)
{
static char used_path[PATH_MAX];
static char validated_path[PATH_MAX];
+ int nongit_ok;
if (!path)
return NULL;
@@ -334,12 +335,9 @@ char *enter_repo(char *path, int strict)
else if (chdir(path))
return NULL;
- if (access("objects", X_OK) == 0 && access("refs", X_OK) == 0 &&
- validate_headref("HEAD") == 0) {
- set_git_dir(".");
- check_repository_format();
+ setup_git_directory_gently(&nongit_ok);
+ if (!nongit_ok)
return path;
- }
return NULL;
}
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 06/26] Tweak init/clone to work properly with GIT_HARDENED_SETUP=1
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (4 preceding siblings ...)
2010-02-16 16:04 ` [WIP PATCH 05/26] enter_repo(): use setup_git_directory_gently internally Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:04 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 07/26] Support running setup_git_dir_gently() from the beginning for builtin commands Nguyễn Thái Ngọc Duy
` (19 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:04 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-init-db.c | 4 ++++
t/t0000-basic.sh | 2 ++
t/t0001-init.sh | 2 ++
t/t0003-attributes.sh | 2 ++
t/t5600-clone-fail-cleanup.sh | 2 ++
t/t5601-clone.sh | 2 ++
t/t5602-clone-remote-exec.sh | 2 ++
t/t5700-clone-reference.sh | 2 ++
t/t5701-clone-local.sh | 2 ++
t/t5702-clone-options.sh | 2 ++
t/t5704-bundle.sh | 2 ++
t/t5705-clone-2gb.sh | 2 ++
t/t5706-clone-branch.sh | 2 ++
13 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/builtin-init-db.c b/builtin-init-db.c
index dd84cae..22b2b07 100644
--- a/builtin-init-db.c
+++ b/builtin-init-db.c
@@ -195,6 +195,7 @@ static int create_default_files(const char *template_path)
* from it after installing.
*/
copy_templates(template_path);
+ startup_info->have_repository = 1;
git_config(git_default_config, NULL);
is_bare_repository_cfg = init_is_bare_repository;
@@ -286,6 +287,9 @@ int init_db(const char *template_dir, unsigned int flags)
char *path;
int len, reinit;
+ /* init_db's caller mush have called set_git_dir() */
+ startup_info->have_set_gitdir = 1;
+
safe_create_dir(get_git_dir(), 0);
init_is_bare_repository = is_bare_repository();
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index f4ca4fc..0a4be17 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -28,6 +28,8 @@ then
exit 1
fi
+export GIT_HARDENED_SETUP=1
+
. ./test-lib.sh
################################################################
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index 5386504..0dd6ffa 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -4,6 +4,8 @@ test_description='git init'
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
check_config () {
if test -d "$1" && test -f "$1/config" && test -d "$1/refs"
then
diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh
index 1c77192..2ebb345 100755
--- a/t/t0003-attributes.sh
+++ b/t/t0003-attributes.sh
@@ -4,6 +4,8 @@ test_description=gitattributes
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
attr_check () {
path="$1"
diff --git a/t/t5600-clone-fail-cleanup.sh b/t/t5600-clone-fail-cleanup.sh
index ee06d28..424e6ad 100755
--- a/t/t5600-clone-fail-cleanup.sh
+++ b/t/t5600-clone-fail-cleanup.sh
@@ -11,6 +11,8 @@ remove the directory before attempting a clone again.'
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
test_expect_success \
'clone of non-existent source should fail' \
'test_must_fail git clone foo bar'
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index 2147567..a598f75 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -4,6 +4,8 @@ test_description=clone
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
test_expect_success setup '
rm -fr .git &&
diff --git a/t/t5602-clone-remote-exec.sh b/t/t5602-clone-remote-exec.sh
index deffdae..a94c528 100755
--- a/t/t5602-clone-remote-exec.sh
+++ b/t/t5602-clone-remote-exec.sh
@@ -4,6 +4,8 @@ test_description=clone
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
test_expect_success setup '
echo "#!/bin/sh" > not_ssh
echo "echo \"\$*\" > not_ssh_output" >> not_ssh
diff --git a/t/t5700-clone-reference.sh b/t/t5700-clone-reference.sh
index 1c10916..2464f57 100755
--- a/t/t5700-clone-reference.sh
+++ b/t/t5700-clone-reference.sh
@@ -6,6 +6,8 @@
test_description='test clone --reference'
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
base_dir=`pwd`
U=$base_dir/UPLOAD_LOG
diff --git a/t/t5701-clone-local.sh b/t/t5701-clone-local.sh
index 8b4c356..3c3d6ed 100755
--- a/t/t5701-clone-local.sh
+++ b/t/t5701-clone-local.sh
@@ -3,6 +3,8 @@
test_description='test local clone'
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
D=`pwd`
test_expect_success 'preparing origin repository' '
diff --git a/t/t5702-clone-options.sh b/t/t5702-clone-options.sh
index 02cb024..63f59ba 100755
--- a/t/t5702-clone-options.sh
+++ b/t/t5702-clone-options.sh
@@ -3,6 +3,8 @@
test_description='basic clone options'
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
test_expect_success 'setup' '
mkdir parent &&
diff --git a/t/t5704-bundle.sh b/t/t5704-bundle.sh
index a8f4419..507c838 100755
--- a/t/t5704-bundle.sh
+++ b/t/t5704-bundle.sh
@@ -3,6 +3,8 @@
test_description='some bundle related tests'
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
test_expect_success 'setup' '
: > file &&
diff --git a/t/t5705-clone-2gb.sh b/t/t5705-clone-2gb.sh
index adfaae8..f63a557 100755
--- a/t/t5705-clone-2gb.sh
+++ b/t/t5705-clone-2gb.sh
@@ -3,6 +3,8 @@
test_description='Test cloning a repository larger than 2 gigabyte'
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
test -z "$GIT_TEST_CLONE_2GB" &&
say "Skipping expensive 2GB clone test; enable it with GIT_TEST_CLONE_2GB=t" &&
test_done &&
diff --git a/t/t5706-clone-branch.sh b/t/t5706-clone-branch.sh
index f3f9a76..fbee0d0 100755
--- a/t/t5706-clone-branch.sh
+++ b/t/t5706-clone-branch.sh
@@ -3,6 +3,8 @@
test_description='clone --branch option'
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
check_HEAD() {
echo refs/heads/"$1" >expect &&
git symbolic-ref HEAD >actual &&
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 07/26] Support running setup_git_dir_gently() from the beginning for builtin commands
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (5 preceding siblings ...)
2010-02-16 16:04 ` [WIP PATCH 06/26] Tweak init/clone to work properly with GIT_HARDENED_SETUP=1 Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:04 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 08/26] config: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
` (18 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:04 UTC (permalink / raw)
To: git; +Cc: Nguyễn Thái Ngọc Duy
Attempt to access gitdir is everywhere, even before cmd_*() is called.
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>
---
git.c | 16 +++++++++++++---
1 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/git.c b/git.c
index ea29cca..5391292 100644
--- a/git.c
+++ b/git.c
@@ -215,13 +215,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;
@@ -236,12 +237,17 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
help = argc == 2 && !strcmp(argv[1], "-h");
if (!help) {
+ if ((p->option & (RUN_SETUP | RUN_SETUP_GENTLY)) == (RUN_SETUP | RUN_SETUP_GENTLY))
+ die("Internal error: RUN_SETUP and RUN_SETUP_GENTLY are mutually exclusive");
+
/* handle_alias() may have set up gitdir for alias lookup */
if (startup_info->have_set_gitdir) {
if (p->option & RUN_SETUP) {
if (!startup_info->have_repository)
die("No repository found");
}
+ if (p->option & RUN_SETUP_GENTLY)
+ ; /* all done */
else {
/* This is WRONG, but we can't get rid of it now */
startup_info->have_set_gitdir = 0;
@@ -252,6 +258,10 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
else {
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)
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 08/26] config: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (6 preceding siblings ...)
2010-02-16 16:04 ` [WIP PATCH 07/26] Support running setup_git_dir_gently() from the beginning for builtin commands Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:04 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 09/26] hash-object: move " Nguyễn Thái Ngọc Duy
` (17 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:04 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 | 12 ++++++------
git.c | 4 ++--
t/t1302-repo-version.sh | 2 +-
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/builtin-config.c b/builtin-config.c
index 4bc46b1..944ec9d 100644
--- a/builtin-config.c
+++ b/builtin-config.c
@@ -159,7 +159,8 @@ static int get_value(const char *key_, const char *regex_)
local = config_exclusive_filename;
if (!local) {
const char *home = getenv("HOME");
- local = repo_config = git_pathdup("config");
+ if (startup_info->have_repository)
+ local = repo_config = git_pathdup("config");
if (git_config_global() && home)
global = xstrdup(mkpath("%s/.gitconfig", home));
if (git_config_system())
@@ -197,7 +198,8 @@ static int get_value(const char *key_, const char *regex_)
git_config_from_file(show_config, system_wide, NULL);
if (do_all && global)
git_config_from_file(show_config, global, NULL);
- git_config_from_file(show_config, local, NULL);
+ if (local)
+ git_config_from_file(show_config, local, NULL);
if (!do_all && !seen && global)
git_config_from_file(show_config, global, NULL);
if (!do_all && !seen && system_wide)
@@ -326,11 +328,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 +409,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 5391292..0022f02 100644
--- a/git.c
+++ b/git.c
@@ -322,7 +322,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 },
@@ -378,7 +378,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 },
diff --git a/t/t1302-repo-version.sh b/t/t1302-repo-version.sh
index 8d305b4..74bf51f 100755
--- a/t/t1302-repo-version.sh
+++ b/t/t1302-repo-version.sh
@@ -29,7 +29,7 @@ test_expect_success 'gitdir selection on normal repos' '
# Make sure it would stop at test2, not trash
test_expect_success 'gitdir selection on unsupported repo' '
(cd test2 &&
- test "$(git config core.repositoryformatversion)" = 99)'
+ test "$(git config --file=.git/config core.repositoryformatversion)" = 99)'
test_expect_success 'gitdir not required mode' '
(git apply --stat test.patch &&
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 09/26] hash-object: move gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (7 preceding siblings ...)
2010-02-16 16:04 ` [WIP PATCH 08/26] config: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 10/26] shortlog: move up " Nguyễn Thái Ngọc Duy
` (16 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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-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 0022f02..a165b43 100644
--- a/git.c
+++ b/git.c
@@ -340,7 +340,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] 27+ messages in thread
* [WIP PATCH 10/26] shortlog: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (8 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 09/26] hash-object: move " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 11/26] Do not look for .git/info/exclude when gitdir is not set up Nguyễn Thái Ngọc Duy
` (15 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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. When the config path is required,
setup_git_env() plays hero and set gitdir to ".git". Shortly after,
setup_git_dir* is run inside cmd_shortlog() and may move gitdir
to somewhere else.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
builtin-shortlog.c | 4 +---
git.c | 2 +-
t/t4201-shortlog.sh | 2 ++
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/builtin-shortlog.c b/builtin-shortlog.c
index b3b055f..a62dfb0 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) {
read_from_stdin(&log);
diff --git a/git.c b/git.c
index a165b43..c7af80e 100644
--- a/git.c
+++ b/git.c
@@ -386,7 +386,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 },
diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh
index a01e55b..7ae327a 100755
--- a/t/t4201-shortlog.sh
+++ b/t/t4201-shortlog.sh
@@ -8,6 +8,8 @@ test_description='git shortlog
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
echo 1 > a1
git add a1
tree=$(git write-tree)
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 11/26] Do not look for .git/info/exclude when gitdir is not set up
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (9 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 10/26] shortlog: move up " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 12/26] grep: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
` (14 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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>
---
dir.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/dir.c b/dir.c
index 67c3af6..a8fcbce 100644
--- a/dir.c
+++ b/dir.c
@@ -1024,9 +1024,11 @@ void setup_standard_excludes(struct dir_struct *dir)
const char *path;
dir->exclude_per_dir = ".gitignore";
- path = git_path("info/exclude");
- if (!access(path, R_OK))
- add_excludes_from_file(dir, path);
+ if (!startup_info || startup_info->have_repository) {
+ path = git_path("info/exclude");
+ if (!access(path, R_OK))
+ add_excludes_from_file(dir, path);
+ }
if (excludes_file && !access(excludes_file, R_OK))
add_excludes_from_file(dir, excludes_file);
}
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 12/26] grep: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (10 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 11/26] Do not look for .git/info/exclude when gitdir is not set up Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 13/26] USE_PAGER should not be used without RUN_SETUP* Nguyễn Thái Ngọc Duy
` (13 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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. When the config path is required,
setup_git_env() plays hero and set gitdir to ".git". Shortly after,
setup_git_dir* is run inside cmd_shortlog() and may move gitdir
to somewhere else.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
builtin-grep.c | 9 +++------
git.c | 2 +-
t/t7002-grep.sh | 2 ++
3 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/builtin-grep.c b/builtin-grep.c
index 46ffc1d..84c05e0 100644
--- a/builtin-grep.c
+++ b/builtin-grep.c
@@ -758,7 +758,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"),
@@ -846,8 +846,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.
@@ -885,9 +883,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 c7af80e..3462b49 100644
--- a/git.c
+++ b/git.c
@@ -339,7 +339,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 },
diff --git a/t/t7002-grep.sh b/t/t7002-grep.sh
index ebae152..67afb42 100755
--- a/t/t7002-grep.sh
+++ b/t/t7002-grep.sh
@@ -8,6 +8,8 @@ test_description='git grep various.
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
cat >hello.c <<EOF
#include <stdio.h>
int main(int argc, const char **argv)
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 13/26] USE_PAGER should not be used without RUN_SETUP*
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (11 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 12/26] grep: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 14/26] Do not try to read $GIT_DIR/info/attributes if there is no repository Nguyễn Thái Ngọc Duy
` (12 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/git.c b/git.c
index 3462b49..1d1ad1a 100644
--- a/git.c
+++ b/git.c
@@ -266,8 +266,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] 27+ messages in thread
* [WIP PATCH 14/26] Do not try to read $GIT_DIR/info/attributes if there is no repository
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (12 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 13/26] USE_PAGER should not be used without RUN_SETUP* Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 15/26] archive: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
` (11 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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>
---
attr.c | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/attr.c b/attr.c
index f5346ed..f1362de 100644
--- a/attr.c
+++ b/attr.c
@@ -480,7 +480,10 @@ static void bootstrap_attr_stack(void)
debug_push(elem);
}
- elem = read_attr_from_file(git_path(INFOATTRIBUTES_FILE), 1);
+ if (!startup_info || startup_info->have_repository)
+ elem = read_attr_from_file(git_path(INFOATTRIBUTES_FILE), 1);
+ else
+ elem = NULL;
if (!elem)
elem = xcalloc(1, sizeof(*elem));
elem->origin = NULL;
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 15/26] archive: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (13 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 14/26] Do not try to read $GIT_DIR/info/attributes if there is no repository Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 16/26] mailinfo: " Nguyễn Thái Ngọc Duy
` (10 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 ++--
t/t0024-crlf-archive.sh | 3 +++
t/t5000-tar-tree.sh | 2 ++
t/t5001-archive-attr.sh | 2 ++
5 files changed, 10 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 1d1ad1a..24fc0fc 100644
--- a/git.c
+++ b/git.c
@@ -308,7 +308,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 },
@@ -396,7 +396,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 },
diff --git a/t/t0024-crlf-archive.sh b/t/t0024-crlf-archive.sh
index c7d0324..f96db4d 100755
--- a/t/t0024-crlf-archive.sh
+++ b/t/t0024-crlf-archive.sh
@@ -3,6 +3,9 @@
test_description='respect crlf in git archive'
. ./test-lib.sh
+
+export GIT_HARDENED_SETUP=1
+
UNZIP=${UNZIP:-unzip}
test_expect_success setup '
diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh
index 27bfba5..4c69dd2 100755
--- a/t/t5000-tar-tree.sh
+++ b/t/t5000-tar-tree.sh
@@ -29,6 +29,8 @@ UNZIP=${UNZIP:-unzip}
SUBSTFORMAT=%H%n
+export GIT_HARDENED_SETUP=1
+
test_expect_success \
'populate workdir' \
'mkdir a b c &&
diff --git a/t/t5001-archive-attr.sh b/t/t5001-archive-attr.sh
index 426b319..80e1e72 100755
--- a/t/t5001-archive-attr.sh
+++ b/t/t5001-archive-attr.sh
@@ -4,6 +4,8 @@ test_description='git archive attribute tests'
. ./test-lib.sh
+export GIT_HARDENED_SETUP=1
+
SUBSTFORMAT=%H%n
test_expect_exists() {
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [WIP PATCH 16/26] mailinfo: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (14 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 15/26] archive: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 17/26] check-ref-format: setup gitdir gently Nguyễn Thái Ngọc Duy
` (9 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 a50ac22..af72151 100644
--- a/builtin-mailinfo.c
+++ b/builtin-mailinfo.c
@@ -1027,9 +1027,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 24fc0fc..8386a3a 100644
--- a/git.c
+++ b/git.c
@@ -352,7 +352,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] 27+ messages in thread
* [WIP PATCH 17/26] check-ref-format: setup gitdir gently
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (15 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 16/26] mailinfo: " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 18/26] verify-pack: set up " Nguyễn Thái Ngọc Duy
` (8 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 8386a3a..8892d5a 100644
--- a/git.c
+++ b/git.c
@@ -317,7 +317,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] 27+ messages in thread
* [WIP PATCH 18/26] verify-pack: set up gitdir gently
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (16 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 17/26] check-ref-format: setup gitdir gently Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 19/26] apply: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
` (7 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 8892d5a..ee596bb 100644
--- a/git.c
+++ b/git.c
@@ -408,7 +408,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] 27+ messages in thread
* [WIP PATCH 19/26] apply: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (17 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 18/26] verify-pack: set up " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 20/26] bundle: " Nguyễn Thái Ngọc Duy
` (6 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 | 13 ++++++-------
git.c | 2 +-
2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/builtin-apply.c b/builtin-apply.c
index 2a1004d..44bb74f 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -26,7 +26,7 @@
* --cached updates only the cache without ever touching the working tree.
*/
static const char *prefix;
-static int prefix_length = -1;
+static int prefix_length;
static int newfd = -1;
static int unidiff_zero;
@@ -2441,7 +2441,7 @@ static int apply_binary(struct image *img, struct patch *patch)
return 0; /* deletion patch */
}
- if (has_sha1_file(sha1)) {
+ if (startup_info->have_repository && has_sha1_file(sha1)) {
/* We already have the postimage */
enum object_type type;
unsigned long size;
@@ -3512,11 +3512,10 @@ static int option_parse_directory(const struct option *opt,
return 0;
}
-int cmd_apply(int argc, const char **argv, const char *unused_prefix)
+int cmd_apply(int argc, const char **argv, const char *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 = 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 ee596bb..96ccedd 100644
--- a/git.c
+++ b/git.c
@@ -307,7 +307,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] 27+ messages in thread
* [WIP PATCH 20/26] bundle: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (18 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 19/26] apply: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 21/26] diff: " Nguyễn Thái Ngọc Duy
` (5 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 96ccedd..9a85619 100644
--- a/git.c
+++ b/git.c
@@ -312,7 +312,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] 27+ messages in thread
* [WIP PATCH 21/26] diff: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (19 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 20/26] bundle: " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 22/26] help: " Nguyễn Thái Ngọc Duy
` (4 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 9a85619..0a0588b 100644
--- a/git.c
+++ b/git.c
@@ -328,7 +328,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] 27+ messages in thread
* [WIP PATCH 22/26] help: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (20 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 21/26] diff: " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 23/26] ls-remote: " Nguyễn Thái Ngọc Duy
` (3 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 0a0588b..c922400 100644
--- a/git.c
+++ b/git.c
@@ -344,7 +344,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] 27+ messages in thread
* [WIP PATCH 23/26] ls-remote: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (21 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 22/26] help: " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 24/26] var: " Nguyễn Thái Ngọc Duy
` (2 subsequent siblings)
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 c922400..8d23f75 100644
--- a/git.c
+++ b/git.c
@@ -351,7 +351,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 },
@@ -371,7 +371,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] 27+ messages in thread
* [WIP PATCH 24/26] var: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (22 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 23/26] ls-remote: " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 25/26] merge-file: " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 26/26] Turn on GIT_HARDENED_SETUP for the whole test suite Nguyễn Thái Ngọc Duy
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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-var.c | 2 --
git.c | 2 +-
2 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/builtin-var.c b/builtin-var.c
index 2280518..f1e1fe3 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 8d23f75..7f715ba 100644
--- a/git.c
+++ b/git.c
@@ -403,7 +403,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] 27+ messages in thread
* [WIP PATCH 25/26] merge-file: move up gitdir setup to run_builtin()
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (23 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 24/26] var: " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 26/26] Turn on GIT_HARDENED_SETUP for the whole test suite Nguyễn Thái Ngọc Duy
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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 7f715ba..3bbcca2 100644
--- a/git.c
+++ b/git.c
@@ -356,7 +356,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] 27+ messages in thread
* [WIP PATCH 26/26] Turn on GIT_HARDENED_SETUP for the whole test suite
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
` (24 preceding siblings ...)
2010-02-16 16:05 ` [WIP PATCH 25/26] merge-file: " Nguyễn Thái Ngọc Duy
@ 2010-02-16 16:05 ` Nguyễn Thái Ngọc Duy
25 siblings, 0 replies; 27+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2010-02-16 16:05 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>
---
t/t0000-basic.sh | 2 --
t/t0001-init.sh | 2 --
t/t0003-attributes.sh | 2 --
t/t0024-crlf-archive.sh | 2 --
t/t4201-shortlog.sh | 2 --
t/t5000-tar-tree.sh | 2 --
t/t5001-archive-attr.sh | 2 --
t/t5600-clone-fail-cleanup.sh | 2 --
t/t5601-clone.sh | 2 --
t/t5602-clone-remote-exec.sh | 2 --
t/t5700-clone-reference.sh | 2 --
t/t5701-clone-local.sh | 2 --
t/t5702-clone-options.sh | 2 --
t/t5704-bundle.sh | 2 --
t/t5705-clone-2gb.sh | 2 --
t/t5706-clone-branch.sh | 2 --
t/t7002-grep.sh | 2 --
t/test-lib.sh | 3 +++
18 files changed, 3 insertions(+), 34 deletions(-)
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 0a4be17..f4ca4fc 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -28,8 +28,6 @@ then
exit 1
fi
-export GIT_HARDENED_SETUP=1
-
. ./test-lib.sh
################################################################
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index 0dd6ffa..5386504 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -4,8 +4,6 @@ test_description='git init'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
check_config () {
if test -d "$1" && test -f "$1/config" && test -d "$1/refs"
then
diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh
index 2ebb345..1c77192 100755
--- a/t/t0003-attributes.sh
+++ b/t/t0003-attributes.sh
@@ -4,8 +4,6 @@ test_description=gitattributes
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
attr_check () {
path="$1"
diff --git a/t/t0024-crlf-archive.sh b/t/t0024-crlf-archive.sh
index f96db4d..ff345ea 100755
--- a/t/t0024-crlf-archive.sh
+++ b/t/t0024-crlf-archive.sh
@@ -4,8 +4,6 @@ test_description='respect crlf in git archive'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
UNZIP=${UNZIP:-unzip}
test_expect_success setup '
diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh
index 7ae327a..a01e55b 100755
--- a/t/t4201-shortlog.sh
+++ b/t/t4201-shortlog.sh
@@ -8,8 +8,6 @@ test_description='git shortlog
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
echo 1 > a1
git add a1
tree=$(git write-tree)
diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh
index 4c69dd2..27bfba5 100755
--- a/t/t5000-tar-tree.sh
+++ b/t/t5000-tar-tree.sh
@@ -29,8 +29,6 @@ UNZIP=${UNZIP:-unzip}
SUBSTFORMAT=%H%n
-export GIT_HARDENED_SETUP=1
-
test_expect_success \
'populate workdir' \
'mkdir a b c &&
diff --git a/t/t5001-archive-attr.sh b/t/t5001-archive-attr.sh
index 80e1e72..426b319 100755
--- a/t/t5001-archive-attr.sh
+++ b/t/t5001-archive-attr.sh
@@ -4,8 +4,6 @@ test_description='git archive attribute tests'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
SUBSTFORMAT=%H%n
test_expect_exists() {
diff --git a/t/t5600-clone-fail-cleanup.sh b/t/t5600-clone-fail-cleanup.sh
index 424e6ad..ee06d28 100755
--- a/t/t5600-clone-fail-cleanup.sh
+++ b/t/t5600-clone-fail-cleanup.sh
@@ -11,8 +11,6 @@ remove the directory before attempting a clone again.'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
test_expect_success \
'clone of non-existent source should fail' \
'test_must_fail git clone foo bar'
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index a598f75..2147567 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -4,8 +4,6 @@ test_description=clone
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
test_expect_success setup '
rm -fr .git &&
diff --git a/t/t5602-clone-remote-exec.sh b/t/t5602-clone-remote-exec.sh
index a94c528..deffdae 100755
--- a/t/t5602-clone-remote-exec.sh
+++ b/t/t5602-clone-remote-exec.sh
@@ -4,8 +4,6 @@ test_description=clone
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
test_expect_success setup '
echo "#!/bin/sh" > not_ssh
echo "echo \"\$*\" > not_ssh_output" >> not_ssh
diff --git a/t/t5700-clone-reference.sh b/t/t5700-clone-reference.sh
index 2464f57..1c10916 100755
--- a/t/t5700-clone-reference.sh
+++ b/t/t5700-clone-reference.sh
@@ -6,8 +6,6 @@
test_description='test clone --reference'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
base_dir=`pwd`
U=$base_dir/UPLOAD_LOG
diff --git a/t/t5701-clone-local.sh b/t/t5701-clone-local.sh
index 3c3d6ed..8b4c356 100755
--- a/t/t5701-clone-local.sh
+++ b/t/t5701-clone-local.sh
@@ -3,8 +3,6 @@
test_description='test local clone'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
D=`pwd`
test_expect_success 'preparing origin repository' '
diff --git a/t/t5702-clone-options.sh b/t/t5702-clone-options.sh
index 63f59ba..02cb024 100755
--- a/t/t5702-clone-options.sh
+++ b/t/t5702-clone-options.sh
@@ -3,8 +3,6 @@
test_description='basic clone options'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
test_expect_success 'setup' '
mkdir parent &&
diff --git a/t/t5704-bundle.sh b/t/t5704-bundle.sh
index 507c838..a8f4419 100755
--- a/t/t5704-bundle.sh
+++ b/t/t5704-bundle.sh
@@ -3,8 +3,6 @@
test_description='some bundle related tests'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
test_expect_success 'setup' '
: > file &&
diff --git a/t/t5705-clone-2gb.sh b/t/t5705-clone-2gb.sh
index f63a557..adfaae8 100755
--- a/t/t5705-clone-2gb.sh
+++ b/t/t5705-clone-2gb.sh
@@ -3,8 +3,6 @@
test_description='Test cloning a repository larger than 2 gigabyte'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
test -z "$GIT_TEST_CLONE_2GB" &&
say "Skipping expensive 2GB clone test; enable it with GIT_TEST_CLONE_2GB=t" &&
test_done &&
diff --git a/t/t5706-clone-branch.sh b/t/t5706-clone-branch.sh
index fbee0d0..f3f9a76 100755
--- a/t/t5706-clone-branch.sh
+++ b/t/t5706-clone-branch.sh
@@ -3,8 +3,6 @@
test_description='clone --branch option'
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
check_HEAD() {
echo refs/heads/"$1" >expect &&
git symbolic-ref HEAD >actual &&
diff --git a/t/t7002-grep.sh b/t/t7002-grep.sh
index 67afb42..ebae152 100755
--- a/t/t7002-grep.sh
+++ b/t/t7002-grep.sh
@@ -8,8 +8,6 @@ test_description='git grep various.
. ./test-lib.sh
-export GIT_HARDENED_SETUP=1
-
cat >hello.c <<EOF
#include <stdio.h>
int main(int argc, const char **argv)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index afd3053..e3e3084 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -61,6 +61,9 @@ export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME
export EDITOR
GIT_TEST_CMP=${GIT_TEST_CMP:-diff -u}
+GIT_HARDENED_SETUP=1
+export GIT_HARDENED_SETUP
+
# Protect ourselves from common misconfiguration to export
# CDPATH into the environment
unset CDPATH
--
1.7.0.195.g637a2
^ permalink raw reply related [flat|nested] 27+ messages in thread
end of thread, other threads:[~2010-02-16 16:38 UTC | newest]
Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-16 16:04 [WIP PATCH 00/26] Git setup cleanup series Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 01/26] rev-parse --git-dir: print relative gitdir correctly Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 02/26] setup_git_directory*: Explicitly set git dir Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 03/26] Save setup_git_dir* info globally for later use Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 04/26] Add GIT_HARDENED_SETUP to detect gitdir/worktree related mis-setup errors Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 05/26] enter_repo(): use setup_git_directory_gently internally Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 06/26] Tweak init/clone to work properly with GIT_HARDENED_SETUP=1 Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 07/26] Support running setup_git_dir_gently() from the beginning for builtin commands Nguyễn Thái Ngọc Duy
2010-02-16 16:04 ` [WIP PATCH 08/26] config: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 09/26] hash-object: move " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 10/26] shortlog: move up " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 11/26] Do not look for .git/info/exclude when gitdir is not set up Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 12/26] grep: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 13/26] USE_PAGER should not be used without RUN_SETUP* Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 14/26] Do not try to read $GIT_DIR/info/attributes if there is no repository Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 15/26] archive: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 16/26] mailinfo: " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 17/26] check-ref-format: setup gitdir gently Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 18/26] verify-pack: set up " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 19/26] apply: move up gitdir setup to run_builtin() Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 20/26] bundle: " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 21/26] diff: " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 22/26] help: " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 23/26] ls-remote: " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 24/26] var: " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 25/26] merge-file: " Nguyễn Thái Ngọc Duy
2010-02-16 16:05 ` [WIP PATCH 26/26] Turn on GIT_HARDENED_SETUP for the whole test suite 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).