Merge git://ozlabs.org/~paulus/gitk
[gitweb.git] / builtin / show-branch.c
index 35a709e63066ad8bebc8a96dee0563bad43348b6..d208fd6c6821c729a713edb485a20bbe8d5e2692 100644 (file)
@@ -6,22 +6,12 @@
 #include "parse-options.h"
 
 static const char* show_branch_usage[] = {
-    "git show-branch [-a|--all] [-r|--remotes] [--topo-order | --date-order] [--current] [--color | --no-color] [--sparse] [--more=<n> | --list | --independent | --merge-base] [--no-name | --sha1-name] [--topics] [<rev> | <glob>]...",
-    "git show-branch (-g|--reflog)[=<n>[,<base>]] [--list] [<ref>]",
+    N_("git show-branch [-a|--all] [-r|--remotes] [--topo-order | --date-order] [--current] [--color[=<when>] | --no-color] [--sparse] [--more=<n> | --list | --independent | --merge-base] [--no-name | --sha1-name] [--topics] [(<rev> | <glob>)...]"),
+    N_("git show-branch (-g|--reflog)[=<n>[,<base>]] [--list] [<ref>]"),
     NULL
 };
 
 static int showbranch_use_color = -1;
-static char column_colors[][COLOR_MAXLEN] = {
-       GIT_COLOR_RED,
-       GIT_COLOR_GREEN,
-       GIT_COLOR_YELLOW,
-       GIT_COLOR_BLUE,
-       GIT_COLOR_MAGENTA,
-       GIT_COLOR_CYAN,
-};
-
-#define COLUMN_COLORS_MAX (ARRAY_SIZE(column_colors))
 
 static int default_num;
 static int default_alloc;
@@ -36,14 +26,14 @@ static const char **default_arg;
 
 static const char *get_color_code(int idx)
 {
-       if (showbranch_use_color)
-               return column_colors[idx];
+       if (want_color(showbranch_use_color))
+               return column_colors_ansi[idx % column_colors_ansi_max];
        return "";
 }
 
 static const char *get_color_reset_code(void)
 {
-       if (showbranch_use_color)
+       if (want_color(showbranch_use_color))
                return GIT_COLOR_RESET;
        return "";
 }
@@ -243,7 +233,7 @@ static void join_revs(struct commit_list **list_p,
                        if (mark_seen(p, seen_p) && !still_interesting)
                                extra--;
                        p->object.flags |= flags;
-                       insert_by_date(p, list_p);
+                       commit_list_insert_by_date(p, list_p);
                }
        }
 
@@ -293,8 +283,7 @@ static void show_one_commit(struct commit *commit, int no_name)
        struct commit_name *name = commit->util;
 
        if (commit->object.parsed) {
-               struct pretty_print_context ctx = {0};
-               pretty_print_commit(CMIT_FMT_ONELINE, commit, &pretty, &ctx);
+               pp_commit_easy(CMIT_FMT_ONELINE, commit, &pretty);
                pretty_str = pretty.buf;
        }
        if (!prefixcmp(pretty_str, "[PATCH] "))
@@ -313,7 +302,8 @@ static void show_one_commit(struct commit *commit, int no_name)
                }
                else
                        printf("[%s] ",
-                              find_unique_abbrev(commit->object.sha1, 7));
+                              find_unique_abbrev(commit->object.sha1,
+                                                 DEFAULT_ABBREV));
        }
        puts(pretty_str);
        strbuf_release(&pretty);
@@ -583,7 +573,7 @@ static int git_show_branch_config(const char *var, const char *value, void *cb)
        }
 
        if (!strcmp(var, "color.showbranch")) {
-               showbranch_use_color = git_config_colorbool(var, value, -1);
+               showbranch_use_color = git_config_colorbool(var, value);
                return 0;
        }
 
@@ -658,36 +648,36 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
        const char *reflog_base = NULL;
        struct option builtin_show_branch_options[] = {
                OPT_BOOLEAN('a', "all", &all_heads,
-                           "show remote-tracking and local branches"),
+                           N_("show remote-tracking and local branches")),
                OPT_BOOLEAN('r', "remotes", &all_remotes,
-                           "show remote-tracking branches"),
-               OPT_BOOLEAN(0, "color", &showbranch_use_color,
-                           "color '*!+-' corresponding to the branch"),
-               { OPTION_INTEGER, 0, "more", &extra, "n",
-                           "show <n> more commits after the common ancestor",
+                           N_("show remote-tracking branches")),
+               OPT__COLOR(&showbranch_use_color,
+                           N_("color '*!+-' corresponding to the branch")),
+               { OPTION_INTEGER, 0, "more", &extra, N_("n"),
+                           N_("show <n> more commits after the common ancestor"),
                            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_SET_INT(0, "list", &extra, N_("synonym to more=-1"), -1),
+               OPT_BOOLEAN(0, "no-name", &no_name, N_("suppress naming strings")),
                OPT_BOOLEAN(0, "current", &with_current_branch,
-                           "include the current branch"),
+                           N_("include the current branch")),
                OPT_BOOLEAN(0, "sha1-name", &sha1_name,
-                           "name commits with their object names"),
+                           N_("name commits with their object names")),
                OPT_BOOLEAN(0, "merge-base", &merge_base,
-                           "show possible merge bases"),
+                           N_("show possible merge bases")),
                OPT_BOOLEAN(0, "independent", &independent,
-                           "show refs unreachable from any other ref"),
+                           N_("show refs unreachable from any other ref")),
                OPT_BOOLEAN(0, "topo-order", &lifo,
-                           "show commits in topological order"),
+                           N_("show commits in topological order")),
                OPT_BOOLEAN(0, "topics", &topics,
-                           "show only commits not on the first branch"),
+                           N_("show only commits not on the first branch")),
                OPT_SET_INT(0, "sparse", &dense,
-                           "show merges reachable from only one tip", 0),
+                           N_("show merges reachable from only one tip"), 0),
                OPT_SET_INT(0, "date-order", &lifo,
-                           "show commits where no parent comes before its "
-                           "children", 0),
-               { OPTION_CALLBACK, 'g', "reflog", &reflog_base, "<n>[,<base>]",
-                           "show <n> most recent ref-log entries starting at "
-                           "base",
+                           N_("show commits where no parent comes before its "
+                              "children"), 0),
+               { OPTION_CALLBACK, 'g', "reflog", &reflog_base, N_("<n>[,<base>]"),
+                           N_("show <n> most recent ref-log entries starting at "
+                              "base"),
                            PARSE_OPT_OPTARG | PARSE_OPT_LITERAL_ARGHELP,
                            parse_reflog_param },
                OPT_END()
@@ -695,9 +685,6 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 
        git_config(git_show_branch_config, NULL);
 
-       if (showbranch_use_color == -1)
-               showbranch_use_color = git_use_color_default;
-
        /* If nothing is specified, try the default first */
        if (ac == 1 && default_num) {
                ac = default_num;
@@ -739,10 +726,8 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
 
                if (ac == 0) {
                        static const char *fake_av[2];
-                       const char *refname;
 
-                       refname = resolve_ref("HEAD", sha1, 1, NULL);
-                       fake_av[0] = xstrdup(refname);
+                       fake_av[0] = resolve_refdup("HEAD", sha1, 1, NULL);
                        fake_av[1] = NULL;
                        av = fake_av;
                        ac = 1;
@@ -804,7 +789,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                }
        }
 
-       head_p = resolve_ref("HEAD", head_sha1, 1, NULL);
+       head_p = resolve_ref_unsafe("HEAD", head_sha1, 1, NULL);
        if (head_p) {
                head_len = strlen(head_p);
                memcpy(head, head_p, head_len + 1);
@@ -858,7 +843,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                 */
                commit->object.flags |= flag;
                if (commit->object.flags == flag)
-                       insert_by_date(commit, &list);
+                       commit_list_insert_by_date(commit, &list);
                rev[num_rev] = commit;
        }
        for (i = 0; i < num_rev; i++)
@@ -867,7 +852,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
        if (0 <= extra)
                join_revs(&list, &seen, num_rev, extra);
 
-       sort_by_date(&seen);
+       commit_list_sort_by_date(&seen);
 
        if (merge_base)
                return show_merge_base(seen, num_rev);
@@ -891,7 +876,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                                for (j = 0; j < i; j++)
                                        putchar(' ');
                                printf("%s%c%s [%s] ",
-                                      get_color_code(i % COLUMN_COLORS_MAX),
+                                      get_color_code(i),
                                       is_head ? '*' : '!',
                                       get_color_reset_code(), ref_name[i]);
                        }
@@ -953,7 +938,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
                                else
                                        mark = '+';
                                printf("%s%c%s",
-                                      get_color_code(i % COLUMN_COLORS_MAX),
+                                      get_color_code(i),
                                       mark, get_color_reset_code());
                        }
                        putchar(' ');