>From 6a82c5486163a058cf2bdbe5089527084a563b80 Mon Sep 17 00:00:00 2001 From: Daniel Knittl-Frank <knittl89+git@xxxxxxxxxxxxxx> Date: Tue, 20 Apr 2010 22:40:54 +0200 Subject: [PATCH] Show branch information in short output of git status This patch adds a first line in the output of `git status -s`, showing which branch the user is currently on, and in case of tracking branches the number of commits on each branch. Signed-off-by: Daniel Knittl-Frank <knittl89+git@xxxxxxxxxxxxxx> --- wt-status.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 45 insertions(+), 0 deletions(-) diff --git a/wt-status.c b/wt-status.c index 8ca59a2..2e6c56e 100644 --- a/wt-status.c +++ b/wt-status.c @@ -9,6 +9,7 @@ #include "quote.h" #include "run-command.h" #include "remote.h" +#include "refs.h" static char default_wt_status_colors[][COLOR_MAXLEN] = { GIT_COLOR_NORMAL, /* WT_STATUS_HEADER */ @@ -721,9 +722,53 @@ static void wt_shortstatus_untracked(int null_termination, struct string_list_it } } +static void wt_shortstatus_print_tracking(struct wt_status *s) +{ + struct branch *branch; + const char *branch_color = color(WT_STATUS_HEADER, s); + + const char *base; + const char *branch_name; + int num_ours, num_theirs; + + color_fprintf(s->fp, color(WT_STATUS_HEADER, s), "## "); + + if(!s->branch) return; + branch_name = s->branch; + + if (!prefixcmp(branch_name, "refs/heads/")) + branch_name += 11; + else if (!strcmp(branch_name, "HEAD")) { + branch_color = color(WT_STATUS_NOBRANCH, s); + } + + branch = branch_get(s->branch + 11); + if (!stat_tracking_info(branch, &num_ours, &num_theirs)) { + + if(s->is_initial) { + color_fprintf(s->fp, + color(WT_STATUS_HEADER, s), + "Initial commit ... "); + } + color_fprintf_ln(s->fp, branch_color, + "%s", branch_name); + return; + } + + base = branch->merge[0]->dst; + base = shorten_unambiguous_ref(base, 0); + color_fprintf_ln(s->fp, branch_color, + "%s (%d) ... %s (%d)", + branch_name, num_ours, + base, num_theirs); +} + void wt_shortstatus_print(struct wt_status *s, int null_termination) { int i; + + wt_shortstatus_print_tracking(s); + for (i = 0; i < s->change.nr; i++) { struct wt_status_change_data *d; struct string_list_item *it; -- 1.7.1.rc2.6.g1015.dirty -- typed with http://neo-layout.org myFtPhp -- visit http://myftphp.sf.net -- v. 0.4.7 released! -- 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