Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> writes: > Pseudo html tags to to mark color, like > "On branch <color1>%s</color1>" is probably not a bad idea. The output machinery needs to understand _some_ color mark-up if the destination does not support ANSI colors natively, and there already is such a code in compat/ for windows IIRC. Adding yet another color mark-up wouldn't help anybody. I would suggest to just declare that internally we use ANSI colors as the standard color mark-up and be done with it. > builtin/branch.c | 31 ++++++++++++++++++++++--------- > 1 files changed, 22 insertions(+), 9 deletions(-) > > diff --git a/builtin/branch.c b/builtin/branch.c > index 8813d2e..5011881 100644 > --- a/builtin/branch.c > +++ b/builtin/branch.c > @@ -384,6 +384,7 @@ static void fill_tracking_info(struct strbuf *stat, const char *branch_name, > int show_upstream_ref) > { > int ours, theirs; > + const char *ref = NULL; > struct branch *branch = branch_get(branch_name); > > if (!stat_tracking_info(branch, &ours, &theirs)) { > @@ -394,16 +395,28 @@ static void fill_tracking_info(struct strbuf *stat, const char *branch_name, > return; > } > > - strbuf_addch(stat, '['); > if (show_upstream_ref) > - strbuf_addf(stat, "%s: ", > - shorten_unambiguous_ref(branch->merge[0]->dst, 0)); > - if (!ours) > - strbuf_addf(stat, _("behind %d] "), theirs); > - else if (!theirs) > - strbuf_addf(stat, _("ahead %d] "), ours); > - else > - strbuf_addf(stat, _("ahead %d, behind %d] "), ours, theirs); > + ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0); > + if (!ours) { > + if (ref) > + strbuf_addf(stat, _("[%s: behind %d]"), ref, theirs); > + else > + strbuf_addf(stat, _("[behind %d]"), theirs); > + > + } else if (!theirs) { > + if (ref) > + strbuf_addf(stat, _("[%s: ahead %d]"), ref, ours); > + else > + strbuf_addf(stat, _("[ahead %d]"), ours); > + } else { > + if (ref) > + strbuf_addf(stat, _("[%s: ahead %d, behind %d]"), > + ref, ours, theirs); > + else > + strbuf_addf(stat, _("[ahead %d, behind %d]"), > + ours, theirs); > + } > + strbuf_addch(stat, ' '); You should free "ref" here, as it is an allocated piece of memory you own. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html