Browse Source

Merge branch 'as/autocorrect-alias'

* as/autocorrect-alias:
  git.c: make autocorrected aliases work
maint
Junio C Hamano 16 years ago
parent
commit
5786f4fac7
  1. 53
      git.c

53
git.c

@ -416,12 +416,34 @@ static void execv_dashed_external(const char **argv) @@ -416,12 +416,34 @@ static void execv_dashed_external(const char **argv)
strbuf_release(&cmd);
}

static int run_argv(int *argcp, const char ***argv)
{
int done_alias = 0;

while (1) {
/* See if it's an internal command */
handle_internal_command(*argcp, *argv);

/* .. then try the external ones */
execv_dashed_external(*argv);

/* It could be an alias -- this works around the insanity
* of overriding "git log" with "git show" by having
* alias.log = show
*/
if (done_alias || !handle_alias(argcp, argv))
break;
done_alias = 1;
}

return done_alias;
}


int main(int argc, const char **argv)
{
const char *cmd = argv[0] && *argv[0] ? argv[0] : "git-help";
char *slash = (char *)cmd + strlen(cmd);
int done_alias = 0;

/*
* Take the basename of argv[0] as the command
@ -479,31 +501,22 @@ int main(int argc, const char **argv) @@ -479,31 +501,22 @@ int main(int argc, const char **argv)
setup_path();

while (1) {
/* See if it's an internal command */
handle_internal_command(argc, argv);

/* .. then try the external ones */
execv_dashed_external(argv);

/* It could be an alias -- this works around the insanity
* of overriding "git log" with "git show" by having
* alias.log = show
*/
if (done_alias || !handle_alias(&argc, &argv))
static int done_help = 0;
static int was_alias = 0;
was_alias = run_argv(&argc, &argv);
if (errno != ENOENT)
break;
done_alias = 1;
}

if (errno == ENOENT) {
if (done_alias) {
if (was_alias) {
fprintf(stderr, "Expansion of alias '%s' failed; "
"'%s' is not a git-command\n",
cmd, argv[0]);
exit(1);
}
argv[0] = help_unknown_cmd(cmd);
handle_internal_command(argc, argv);
execv_dashed_external(argv);
if (!done_help) {
cmd = argv[0] = help_unknown_cmd(cmd);
done_help = 1;
} else
break;
}

fprintf(stderr, "Failed to run command '%s': %s\n",

Loading…
Cancel
Save