We check if given ref is the current branch in print_ref_list().  Move
this check to print_ref_item() where it is checked right before
printing.

Based-on-patch-by: Jeff King <p...@peff.net>
Mentored-by: Christian Couder <christian.cou...@gmail.com>
Mentored-by: Matthieu Moy <matthieu....@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik....@gmail.com>
---
 builtin/branch.c | 29 ++++++++++++-----------------
 1 file changed, 12 insertions(+), 17 deletions(-)

diff --git a/builtin/branch.c b/builtin/branch.c
index f3d83d0..ba9cbad 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -534,9 +534,9 @@ static char *get_head_description(void)
 }
 
 static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,
-                          int abbrev, int current, const char *remote_prefix)
+                          int abbrev, int detached, const char *remote_prefix)
 {
-       char c;
+       char c = ' ';
        int color;
        struct strbuf out = STRBUF_INIT, name = STRBUF_INIT;
        const char *prefix = "";
@@ -547,7 +547,11 @@ static void print_ref_item(struct ref_item *item, int 
maxwidth, int verbose,
 
        switch (item->kind) {
        case REF_LOCAL_BRANCH:
-               color = BRANCH_COLOR_LOCAL;
+               if (!detached && !strcmp(item->name, head)) {
+                       color = BRANCH_COLOR_CURRENT;
+                       c = '*';
+               } else
+                       color = BRANCH_COLOR_LOCAL;
                break;
        case REF_REMOTE_BRANCH:
                color = BRANCH_COLOR_REMOTE;
@@ -556,18 +560,13 @@ static void print_ref_item(struct ref_item *item, int 
maxwidth, int verbose,
        case REF_DETACHED_HEAD:
                color = BRANCH_COLOR_CURRENT;
                desc = get_head_description();
+               c = '*';
                break;
        default:
                color = BRANCH_COLOR_PLAIN;
                break;
        }
 
-       c = ' ';
-       if (current) {
-               c = '*';
-               color = BRANCH_COLOR_CURRENT;
-       }
-
        strbuf_addf(&name, "%s%s", prefix, desc);
        if (verbose) {
                int utf8_compensation = strlen(name.buf) - 
utf8_strwidth(name.buf);
@@ -677,21 +676,17 @@ static int print_ref_list(int kinds, int detached, int 
verbose, int abbrev, stru
        index = ref_list.index;
 
        /* Print detached heads before sorting and printing the rest */
-       if (detached && (ref_list.list[index - 1].kind == REF_DETACHED_HEAD) &&
-           !strcmp(ref_list.list[index - 1].name, head)) {
+       if (detached) {
                print_ref_item(&ref_list.list[index - 1], maxwidth, verbose, 
abbrev,
-                              1, remote_prefix);
+                              detached, remote_prefix);
                index -= 1;
        }
 
        qsort(ref_list.list, index, sizeof(struct ref_item), ref_cmp);
 
-       for (i = 0; i < index; i++) {
-               int current = !detached && (ref_list.list[i].kind == 
REF_LOCAL_BRANCH) &&
-                       !strcmp(ref_list.list[i].name, head);
+       for (i = 0; i < index; i++)
                print_ref_item(&ref_list.list[i], maxwidth, verbose,
-                              abbrev, current, remote_prefix);
-       }
+                              abbrev, detached, remote_prefix);
 
        free_ref_list(&ref_list);
 
-- 
2.4.6

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to