Signed-off-by: Felipe Contreras <[email protected]>
---
builtin/branch.c | 45 ++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 40 insertions(+), 5 deletions(-)
diff --git a/builtin/branch.c b/builtin/branch.c
index 48af999..47644ad 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -42,6 +42,7 @@ static char branch_colors[][COLOR_MAXLEN] = {
GIT_COLOR_NORMAL, /* LOCAL */
GIT_COLOR_GREEN, /* CURRENT */
GIT_COLOR_BLUE, /* UPSTREAM */
+ GIT_COLOR_YELLOW, /* PUBLISH */
};
enum color_branch {
BRANCH_COLOR_RESET = 0,
@@ -49,7 +50,8 @@ enum color_branch {
BRANCH_COLOR_REMOTE = 2,
BRANCH_COLOR_LOCAL = 3,
BRANCH_COLOR_CURRENT = 4,
- BRANCH_COLOR_UPSTREAM = 5
+ BRANCH_COLOR_UPSTREAM = 5,
+ BRANCH_COLOR_PUBLISH = 6
};
static enum merge_filter {
@@ -76,6 +78,8 @@ static int parse_branch_color_slot(const char *var, int ofs)
return BRANCH_COLOR_CURRENT;
if (!strcasecmp(var+ofs, "upstream"))
return BRANCH_COLOR_UPSTREAM;
+ if (!strcasecmp(var+ofs, "publish"))
+ return BRANCH_COLOR_PUBLISH;
return -1;
}
@@ -424,17 +428,37 @@ static void fill_tracking_info(struct strbuf *stat, const
char *branch_name,
struct branch *branch = branch_get(branch_name);
struct strbuf fancy = STRBUF_INIT;
+ if (!branch)
+ return;
+
if (!stat_tracking_info(branch, &ours, &theirs)) {
- if (branch && branch->merge && branch->merge[0]->dst &&
- show_upstream_ref) {
+ if (!show_upstream_ref)
+ return;
+ if (branch->merge && branch->merge[0]->dst) {
ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0);
if (want_color(branch_use_color))
- strbuf_addf(stat, "[%s%s%s] ",
+ strbuf_addf(&fancy, "%s%s%s",
branch_get_color(BRANCH_COLOR_UPSTREAM),
ref,
branch_get_color(BRANCH_COLOR_RESET));
else
- strbuf_addf(stat, "[%s] ", ref);
+ strbuf_addstr(&fancy, ref);
+ }
+ if (branch->push.dst) {
+ ref = shorten_unambiguous_ref(branch->push.dst, 0);
+ if (fancy.len)
+ strbuf_addstr(&fancy, ", ");
+ if (want_color(branch_use_color))
+ strbuf_addf(&fancy, "%s%s%s",
+
branch_get_color(BRANCH_COLOR_PUBLISH),
+ ref,
branch_get_color(BRANCH_COLOR_RESET));
+ else
+ strbuf_addstr(&fancy, ref);
}
+ if (!fancy.len)
+ return;
+ strbuf_addf(stat, _("[%s]"), fancy.buf);
+ strbuf_release(&fancy);
+ strbuf_addch(stat, ' ');
return;
}
@@ -446,6 +470,17 @@ static void fill_tracking_info(struct strbuf *stat, const
char *branch_name,
ref,
branch_get_color(BRANCH_COLOR_RESET));
else
strbuf_addstr(&fancy, ref);
+ if (branch->push.dst) {
+ ref = shorten_unambiguous_ref(branch->push.dst, 0);
+ if (fancy.len)
+ strbuf_addstr(&fancy, ", ");
+ if (want_color(branch_use_color))
+ strbuf_addf(&fancy, "%s%s%s",
+
branch_get_color(BRANCH_COLOR_PUBLISH),
+ ref,
branch_get_color(BRANCH_COLOR_RESET));
+ else
+ strbuf_addstr(&fancy, ref);
+ }
}
if (!ours) {
--
1.8.4-337-g7358a66-dirty
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html