summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 7c2b302)
raw | patch | inline | side by side (parent: 7c2b302)
author | Jeff King <peff@peff.net> | |
Tue, 7 Apr 2009 07:16:56 +0000 (03:16 -0400) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Wed, 8 Apr 2009 06:22:15 +0000 (23:22 -0700) |
This information is easily accessible when we are
calculating the relationship. The only reason not to print
it all the time is that it consumes a fair bit of screen
space, and may not be of interest to the user.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
calculating the relationship. The only reason not to print
it all the time is that it consumes a fair bit of screen
space, and may not be of interest to the user.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-branch.txt | patch | blob | history | |
builtin-branch.c | patch | blob | history |
index 31ba7f2ade7643d60e0bf1b0bb70271afe16ddeb..ba3dea684096b601804058501f4631f09e6d4c38 100644 (file)
-v::
--verbose::
- Show sha1 and commit subject line for each head.
+ Show sha1 and commit subject line for each head, along with
+ relationship to upstream branch (if any). If given twice, print
+ the name of the upstream branch, as well.
--abbrev=<length>::
Alter the sha1's minimum display length in the output listing.
diff --git a/builtin-branch.c b/builtin-branch.c
index ca81d725cbac618b7dbb351dc4fb8d3a7f8fef1b..32758216961b9160b32315e9cb0ff9c68f9afdf9 100644 (file)
--- a/builtin-branch.c
+++ b/builtin-branch.c
return strcmp(c1->name, c2->name);
}
-static void fill_tracking_info(struct strbuf *stat, const char *branch_name)
+static void fill_tracking_info(struct strbuf *stat, const char *branch_name,
+ int show_upstream_ref)
{
int ours, theirs;
struct branch *branch = branch_get(branch_name);
- if (!stat_tracking_info(branch, &ours, &theirs) || (!ours && !theirs))
+ if (!stat_tracking_info(branch, &ours, &theirs)) {
+ if (branch && branch->merge && branch->merge[0]->dst &&
+ show_upstream_ref)
+ strbuf_addf(stat, "[%s] ",
+ shorten_unambiguous_ref(branch->merge[0]->dst));
return;
+ }
+
+ strbuf_addch(stat, '[');
+ if (show_upstream_ref)
+ strbuf_addf(stat, "%s: ",
+ shorten_unambiguous_ref(branch->merge[0]->dst));
if (!ours)
- strbuf_addf(stat, "[behind %d] ", theirs);
+ strbuf_addf(stat, "behind %d] ", theirs);
else if (!theirs)
- strbuf_addf(stat, "[ahead %d] ", ours);
+ strbuf_addf(stat, "ahead %d] ", ours);
else
- strbuf_addf(stat, "[ahead %d, behind %d] ", ours, theirs);
+ strbuf_addf(stat, "ahead %d, behind %d] ", ours, theirs);
}
static int matches_merge_filter(struct commit *commit)
}
if (item->kind == REF_LOCAL_BRANCH)
- fill_tracking_info(&stat, item->name);
+ fill_tracking_info(&stat, item->name, verbose > 1);
strbuf_addf(&out, " %s %s%s",
find_unique_abbrev(item->commit->object.sha1, abbrev),