This commit adds the --no-git-dir option to the git program. Setting this option prevents the git program from searching for a path to a git repository, which can be useful for commands that do not require one. Signed-off-by: Gerrit Pape <pape@xxxxxxxxxxx> --- Documentation/git.txt | 6 +++++- git.c | 6 +++++- setup.c | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Documentation/git.txt b/Documentation/git.txt index ad44cac..6327203 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -11,7 +11,7 @@ SYNOPSIS [verse] 'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] - [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] + [--bare] [--git-dir=GIT_DIR|--no-git-dir] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS] DESCRIPTION @@ -212,6 +212,10 @@ help ...`. setting the GIT_DIR environment variable. It can be an absolute path or relative path to current working directory. +--no-git-dir:: + Do not set a path to a repository, and do not try to find one. + Setting this option is equivalent to setting --git-dir="". + --work-tree=<path>:: Set the path to the working tree. The value will not be used in combination with repositories found automatically in diff --git a/git.c b/git.c index 0b22595..8e060b9 100644 --- a/git.c +++ b/git.c @@ -5,7 +5,7 @@ #include "run-command.h" const char git_usage_string[] = - "git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]"; + "git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR|--no-git-dir] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]"; const char git_more_info_string[] = "See 'git help COMMAND' for more information on a specific command."; @@ -99,6 +99,10 @@ static int handle_options(const char ***argv, int *argc, int *envchanged) setenv(GIT_DIR_ENVIRONMENT, cmd + 10, 1); if (envchanged) *envchanged = 1; + } else if (!strcmp(cmd, "--no-git-dir")) { + setenv(GIT_DIR_ENVIRONMENT, "", 1); + if (envchanged) + *envchanged = 1; } else if (!strcmp(cmd, "--work-tree")) { if (*argc < 2) { fprintf(stderr, "No directory given for --work-tree.\n" ); diff --git a/setup.c b/setup.c index e3781b6..ee9be6e 100644 --- a/setup.c +++ b/setup.c @@ -335,6 +335,8 @@ const char *setup_git_directory_gently(int *nongit_ok) *nongit_ok = 1; return NULL; } + if (!*gitdirenv) + die("This command requires a git repository"); die("Not a git repository: '%s'", gitdirenv); } -- 1.6.0.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html