summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Contreras <felipe.contreras@gmail.com>2014-04-20 14:45:03 -0500
committerJunio C Hamano <gitster@pobox.com>2014-04-21 11:46:16 -0700
commit168a922085ec2734612a277da0e0482e81975fd8 (patch)
tree8b6fdbb40af024f391614fac73651789a0b8384c
parent3e359dccdcbe81164cf05731d0e93fc6a7d5a451 (diff)
downloadgit-168a922085ec2734612a277da0e0482e81975fd8.tar.gz
branch: display publish branch
It does it along the upstream branch, if any. * publish ... [master, gh/publish: ahead 1] ... master ... [master, gh/master] ... Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/branch.c17
-rwxr-xr-xt/t6040-tracking-info.sh5
2 files changed, 19 insertions, 3 deletions
diff --git a/builtin/branch.c b/builtin/branch.c
index a101cf4c70..e2f7afe326 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;
}
@@ -448,6 +452,17 @@ static void fill_tracking_info(struct strbuf *stat, const char *branch_name,
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 (upstream_is_gone) {
if (show_upstream_ref)
diff --git a/t/t6040-tracking-info.sh b/t/t6040-tracking-info.sh
index 7ac8fd06c3..8b9ef63441 100755
--- a/t/t6040-tracking-info.sh
+++ b/t/t6040-tracking-info.sh
@@ -33,7 +33,8 @@ test_expect_success setup '
git checkout -b b5 --track brokenbase &&
advance g &&
git branch -d brokenbase &&
- git checkout -b b6 origin
+ git checkout -b b6 origin &&
+ git branch --set-publish origin/master b6
) &&
git checkout -b follower --track master &&
advance h
@@ -64,7 +65,7 @@ b2 [origin/master: ahead 1, behind 1] d
b3 [origin/master: behind 1] b
b4 [origin/master: ahead 2] f
b5 [brokenbase: gone] g
-b6 [origin/master] c
+b6 [origin/master, origin/master] c
EOF
test_expect_success 'branch -vv' '