Merge branch 'mw/send-email'
[gitweb.git] / git.c
diff --git a/git.c b/git.c
index 4a250f7e8b84f2334c84daaf93baa0fe1f0ca344..0cb86884d738a8314f164c82e4cc619a9998f3db 100644 (file)
--- a/git.c
+++ b/git.c
@@ -93,6 +93,8 @@ static char *alias_string;
 static int git_alias_config(const char *var, const char *value)
 {
        if (!prefixcmp(var, "alias.") && !strcmp(var + 6, alias_command)) {
+               if (!value)
+                       return config_error_nonbool(var);
                alias_string = xstrdup(value);
        }
        return 0;
@@ -169,7 +171,7 @@ static int handle_alias(int *argcp, const char ***argv)
 
                                strbuf_init(&buf, PATH_MAX);
                                strbuf_addstr(&buf, alias_string);
-                               sq_quote_argv(&buf, (*argv) + 1, *argcp - 1, PATH_MAX);
+                               sq_quote_argv(&buf, (*argv) + 1, PATH_MAX);
                                free(alias_string);
                                alias_string = buf.buf;
                        }
@@ -198,7 +200,7 @@ static int handle_alias(int *argcp, const char ***argv)
                if (!strcmp(alias_command, new_argv[0]))
                        die("recursive alias: %s", alias_command);
 
-               trace_argv_printf(new_argv, count,
+               trace_argv_printf(new_argv,
                                  "trace: alias expansion: %s =>",
                                  alias_command);
 
@@ -252,11 +254,11 @@ static int run_command(struct cmd_struct *p, int argc, const char **argv)
        if (p->option & NEED_WORK_TREE)
                setup_work_tree();
 
-       trace_argv_printf(argv, argc, "trace: built-in: git");
+       trace_argv_printf(argv, "trace: built-in: git");
 
        status = p->fn(argc, argv, prefix);
        if (status)
-               return status;
+               return status & 0xff;
 
        /* Somebody closed stdout? */
        if (fstat(fileno(stdout), &st))
@@ -293,6 +295,8 @@ static void handle_internal_command(int argc, const char **argv)
                { "check-attr", cmd_check_attr, RUN_SETUP | NEED_WORK_TREE },
                { "cherry", cmd_cherry, RUN_SETUP },
                { "cherry-pick", cmd_cherry_pick, RUN_SETUP | NEED_WORK_TREE },
+               { "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 },
                { "count-objects", cmd_count_objects, RUN_SETUP },
@@ -301,6 +305,7 @@ static void handle_internal_command(int argc, const char **argv)
                { "diff-files", cmd_diff_files },
                { "diff-index", cmd_diff_index, RUN_SETUP },
                { "diff-tree", cmd_diff_tree, RUN_SETUP },
+               { "fast-export", cmd_fast_export, RUN_SETUP },
                { "fetch", cmd_fetch, RUN_SETUP },
                { "fetch-pack", cmd_fetch_pack, RUN_SETUP },
                { "fetch--tool", cmd_fetch__tool, RUN_SETUP },
@@ -321,13 +326,16 @@ 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 },
                { "mailinfo", cmd_mailinfo },
                { "mailsplit", cmd_mailsplit },
                { "merge-base", cmd_merge_base, RUN_SETUP },
                { "merge-file", cmd_merge_file },
+               { "merge-ours", cmd_merge_ours, RUN_SETUP },
                { "mv", cmd_mv, RUN_SETUP | NEED_WORK_TREE },
                { "name-rev", cmd_name_rev, RUN_SETUP },
                { "pack-objects", cmd_pack_objects, RUN_SETUP },
+               { "peek-remote", cmd_ls_remote },
                { "pickaxe", cmd_blame, RUN_SETUP },
                { "prune", cmd_prune, RUN_SETUP },
                { "prune-packed", cmd_prune_packed, RUN_SETUP },
@@ -338,13 +346,14 @@ static void handle_internal_command(int argc, const char **argv)
                { "rerere", cmd_rerere, RUN_SETUP },
                { "reset", cmd_reset, RUN_SETUP },
                { "rev-list", cmd_rev_list, RUN_SETUP },
-               { "rev-parse", cmd_rev_parse, RUN_SETUP },
+               { "rev-parse", cmd_rev_parse },
                { "revert", cmd_revert, RUN_SETUP | NEED_WORK_TREE },
                { "rm", cmd_rm, RUN_SETUP },
-               { "runstatus", cmd_runstatus, RUN_SETUP | NEED_WORK_TREE },
+               { "send-pack", cmd_send_pack, RUN_SETUP },
                { "shortlog", cmd_shortlog, RUN_SETUP | USE_PAGER },
                { "show-branch", cmd_show_branch, RUN_SETUP },
                { "show", cmd_show, RUN_SETUP | USE_PAGER },
+               { "status", cmd_status, RUN_SETUP | NEED_WORK_TREE },
                { "stripspace", cmd_stripspace },
                { "symbolic-ref", cmd_symbolic_ref, RUN_SETUP },
                { "tag", cmd_tag, RUN_SETUP },