Signed-off-by: Matthias Lederhofer <matled@xxxxxxx> --- With this patch [alias] init = init-db --template=/path/to/template is usable. The change in setup_git_directory_gently is a bug which did not cause any problems yet (afaict): setup_git_directory_gently did die even though nongit_ok was not NULL. Without this GIT_DIR=.foo git init will die. --- git.c | 76 ++++++++++++++++++++++++++++++--------------------------------- setup.c | 4 +++ 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/git.c b/git.c index 452180e..7321d6c 100644 --- a/git.c +++ b/git.c @@ -156,52 +156,48 @@ static int handle_alias(int *argcp, cons { int nongit = 0, ret = 0, saved_errno = errno; const char *subdir; + int count, option_count; + const char** new_argv; subdir = setup_git_directory_gently(&nongit); - if (!nongit) { - int count, option_count; - const char** new_argv; - - alias_command = (*argv)[0]; - git_config(git_alias_config); - if (alias_string) { - - count = split_cmdline(alias_string, &new_argv); - option_count = handle_options(&new_argv, &count); - memmove(new_argv - option_count, new_argv, - count * sizeof(char *)); - new_argv -= option_count; - - if (count < 1) - die("empty alias for %s", alias_command); - - if (!strcmp(alias_command, new_argv[0])) - die("recursive alias: %s", alias_command); - - if (getenv("GIT_TRACE")) { - int i; - fprintf(stderr, "trace: alias expansion: %s =>", - alias_command); - for (i = 0; i < count; ++i) { - fputc(' ', stderr); - sq_quote_print(stderr, new_argv[i]); - } - fputc('\n', stderr); - fflush(stderr); - } - new_argv = realloc(new_argv, sizeof(char*) * - (count + *argcp + 1)); - /* insert after command name */ - memcpy(new_argv + count, *argv + 1, - sizeof(char*) * *argcp); - new_argv[count+*argcp] = NULL; + alias_command = (*argv)[0]; + git_config(git_alias_config); + if (alias_string) { + count = split_cmdline(alias_string, &new_argv); + option_count = handle_options(&new_argv, &count); + memmove(new_argv - option_count, new_argv, + count * sizeof(char *)); + new_argv -= option_count; + + if (count < 1) + die("empty alias for %s", alias_command); - *argv = new_argv; - *argcp += count - 1; + if (!strcmp(alias_command, new_argv[0])) + die("recursive alias: %s", alias_command); - ret = 1; + if (getenv("GIT_TRACE")) { + int i; + fprintf(stderr, "trace: alias expansion: %s =>", + alias_command); + for (i = 0; i < count; ++i) { + fputc(' ', stderr); + sq_quote_print(stderr, new_argv[i]); + } + fputc('\n', stderr); + fflush(stderr); } + + new_argv = realloc(new_argv, sizeof(char*) * + (count + *argcp + 1)); + /* insert after command name */ + memcpy(new_argv + count, *argv + 1, sizeof(char*) * *argcp); + new_argv[count+*argcp] = NULL; + + *argv = new_argv; + *argcp += count - 1; + + ret = 1; } if (subdir) diff --git a/setup.c b/setup.c index 4612f11..358e139 100644 --- a/setup.c +++ b/setup.c @@ -184,6 +184,10 @@ const char *setup_git_directory_gently(i } return NULL; bad_dir_environ: + if (!nongit_ok) { + *nongit_ok = 1; + return NULL; + } path[len] = 0; die("Not a git repository: '%s'", path); } -- 1.4.2.rc2.g91b7 - : 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