rebase: Support preserving merges in non-interactive mode
[gitweb.git] / builtin-show-branch.c
index 07a0c2316bec4dd8341ea494b02874a1b12483cd..233eed499d0b8790781326ff0455bdc7f09fe4d4 100644 (file)
@@ -4,7 +4,7 @@
 #include "builtin.h"
 
 static const char show_branch_usage[] =
-"git-show-branch [--sparse] [--current] [--all] [--remotes] [--topo-order] [--more=count | --list | --independent | --merge-base ] [--topics] [<refs>...] | --reflog[=n[,b]] <branch>";
+"git show-branch [--sparse] [--current] [--all] [--remotes] [--topo-order] [--more=count | --list | --independent | --merge-base ] [--topics] [<refs>...] | --reflog[=n[,b]] <branch>";
 static const char show_branch_usage_reflog[] =
 "--reflog is incompatible with --all, --remotes, --independent or --merge-base";
 
@@ -266,7 +266,7 @@ static void show_one_commit(struct commit *commit, int no_name)
        strbuf_init(&pretty, 0);
        if (commit->object.parsed) {
                pretty_print_commit(CMIT_FMT_ONELINE, commit,
-                                       &pretty, 0, NULL, NULL, 0);
+                                   &pretty, 0, NULL, NULL, 0, 0);
                pretty_str = pretty.buf;
        }
        if (!prefixcmp(pretty_str, "[PATCH] "))
@@ -533,9 +533,11 @@ static void append_one_rev(const char *av)
        die("bad sha1 reference %s", av);
 }
 
-static int git_show_branch_config(const char *var, const char *value)
+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_alloc = default_alloc * 3 / 2 + 20;
                        default_arg = xrealloc(default_arg, sizeof *default_arg * default_alloc);
@@ -545,7 +547,7 @@ static int git_show_branch_config(const char *var, const char *value)
                return 0;
        }
 
-       return git_default_config(var, value);
+       return git_default_config(var, value, cb);
 }
 
 static int omit_in_dense(struct commit *commit, struct commit **rev, int n)
@@ -609,7 +611,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
        int reflog = 0;
        const char *reflog_base = NULL;
 
-       git_config(git_show_branch_config);
+       git_config(git_show_branch_config, NULL);
 
        /* If nothing is specified, try the default first */
        if (ac == 1 && default_num) {
@@ -780,8 +782,8 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                                has_head++;
                }
                if (!has_head) {
-                       int pfxlen = strlen("refs/heads/");
-                       append_one_rev(head + pfxlen);
+                       int offset = !prefixcmp(head, "refs/heads/") ? 11 : 0;
+                       append_one_rev(head + offset);
                }
        }