wt-status: avoid building bogus branch name with detached HEAD
[gitweb.git] / wt-status.c
index e8c39efbcb24203577458662e0ddfe9928a332b7..0e4a04e695f63b99d691ad38863e2a5e85a65e76 100644 (file)
@@ -1521,24 +1521,25 @@ static void wt_shortstatus_print_tracking(struct wt_status *s)
                return;
        branch_name = s->branch;
 
+       if (s->is_initial)
+               color_fprintf(s->fp, header_color, _("Initial commit on "));
+
+       if (!strcmp(s->branch, "HEAD")) {
+               color_fprintf(s->fp, color(WT_STATUS_NOBRANCH, s), "%s",
+                             _("HEAD (no branch)"));
+               goto conclude;
+       }
+
        if (starts_with(branch_name, "refs/heads/"))
                branch_name += 11;
-       else if (!strcmp(branch_name, "HEAD")) {
-               branch_name = _("HEAD (no branch)");
-               branch_color_local = color(WT_STATUS_NOBRANCH, s);
-       }
 
        branch = branch_get(s->branch + 11);
-       if (s->is_initial)
-               color_fprintf(s->fp, header_color, _("Initial commit on "));
 
        color_fprintf(s->fp, branch_color_local, "%s", branch_name);
 
        if (stat_tracking_info(branch, &num_ours, &num_theirs, &base) < 0) {
-               if (!base) {
-                       fputc(s->null_termination ? '\0' : '\n', s->fp);
-                       return;
-               }
+               if (!base)
+                       goto conclude;
 
                upstream_is_gone = 1;
        }
@@ -1548,10 +1549,8 @@ static void wt_shortstatus_print_tracking(struct wt_status *s)
        color_fprintf(s->fp, branch_color_remote, "%s", base);
        free((char *)base);
 
-       if (!upstream_is_gone && !num_ours && !num_theirs) {
-               fputc(s->null_termination ? '\0' : '\n', s->fp);
-               return;
-       }
+       if (!upstream_is_gone && !num_ours && !num_theirs)
+               goto conclude;
 
 #define LABEL(string) (s->no_gettext ? (string) : _(string))
 
@@ -1572,6 +1571,7 @@ static void wt_shortstatus_print_tracking(struct wt_status *s)
        }
 
        color_fprintf(s->fp, header_color, "]");
+ conclude:
        fputc(s->null_termination ? '\0' : '\n', s->fp);
 }