Fix mis-backport of t7002
[gitweb.git] / builtin-show-branch.c
index b1affd2ffbbff955d24ed0a32b2d89d1ae7fe024..baec9ed56f4098183445b85cdd1b2789d487d6fe 100644 (file)
@@ -565,7 +565,15 @@ static int git_show_branch_config(const char *var, const char *value, void *cb)
        if (!strcmp(var, "showbranch.default")) {
                if (!value)
                        return config_error_nonbool(var);
-               if (default_alloc <= default_num + 1) {
+               /*
+                * default_arg is now passed to parse_options(), so we need to
+                * mimick the real argv a bit better.
+                */
+               if (!default_num) {
+                       default_alloc = 20;
+                       default_arg = xcalloc(default_alloc, sizeof(*default_arg));
+                       default_arg[default_num++] = "show-branch";
+               } else if (default_alloc <= default_num + 1) {
                        default_alloc = default_alloc * 3 / 2 + 20;
                        default_arg = xrealloc(default_arg, sizeof *default_arg * default_alloc);
                }
@@ -657,8 +665,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                            "color '*!+-' corresponding to the branch"),
                { OPTION_INTEGER, 0, "more", &extra, "n",
                            "show <n> more commits after the common ancestor",
-                           PARSE_OPT_OPTARG | PARSE_OPT_LASTARG_DEFAULT,
-                           NULL, (intptr_t)1 },
+                           PARSE_OPT_OPTARG, NULL, (intptr_t)1 },
                OPT_SET_INT(0, "list", &extra, "synonym to more=-1", -1),
                OPT_BOOLEAN(0, "no-name", &no_name, "suppress naming strings"),
                OPT_BOOLEAN(0, "current", &with_current_branch,
@@ -693,11 +700,11 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 
        /* If nothing is specified, try the default first */
        if (ac == 1 && default_num) {
-               ac = default_num + 1;
-               av = default_arg - 1; /* ick; we would not address av[0] */
+               ac = default_num;
+               av = default_arg;
        }
 
-       ac = parse_options(ac, av, builtin_show_branch_options,
+       ac = parse_options(ac, av, prefix, builtin_show_branch_options,
                           show_branch_usage, PARSE_OPT_STOP_AT_NON_OPTION);
        if (all_heads)
                all_remotes = 1;