summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksi Aalto <aga@iki.fi>2010-11-18 01:40:05 +0200
committerJunio C Hamano <gitster@pobox.com>2010-11-29 16:31:34 -0800
commit1d282327d7354dd3a1caefa4af06562aa816710d (patch)
tree8779a64c22934c6be78c08705576272b5276bfdf
parent7d43de925b2771d295d8fc4341b7bd544e2a74fa (diff)
downloadgit-1d282327d7354dd3a1caefa4af06562aa816710d.tar.gz
status: show branchname with a configurable color
You can tell "git status" to paint the name of the current branch in its output (the line that says "On branch ...") by setting the configuration variable color.status.branch; it is by default turned off. Signed-off-by: Aleksi Aalto <aga@iki.fi> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--Documentation/config.txt3
-rw-r--r--builtin/commit.c2
-rwxr-xr-xt/t7508-status.sh5
-rw-r--r--wt-status.c9
-rw-r--r--wt-status.h6
5 files changed, 17 insertions, 8 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 6a6c0b5bd8..6cd762dfb8 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -774,7 +774,8 @@ color.status.<slot>::
one of `header` (the header text of the status message),
`added` or `updated` (files which are added but not committed),
`changed` (files which are changed but not added in the index),
- `untracked` (files which are not tracked by git), or
+ `untracked` (files which are not tracked by git),
+ `branch` (the current branch), or
`nobranch` (the color the 'no branch' warning is shown in, defaulting
to red). The values of these variables may be specified as in
color.branch.<slot>.
diff --git a/builtin/commit.c b/builtin/commit.c
index 4fd1a1692f..025c342e5e 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -984,6 +984,8 @@ static int parse_status_slot(const char *var, int offset)
{
if (!strcasecmp(var+offset, "header"))
return WT_STATUS_HEADER;
+ if (!strcasecmp(var+offset, "branch"))
+ return WT_STATUS_ONBRANCH;
if (!strcasecmp(var+offset, "updated")
|| !strcasecmp(var+offset, "added"))
return WT_STATUS_UPDATED;
diff --git a/t/t7508-status.sh b/t/t7508-status.sh
index 4de3e27950..ba36d72661 100755
--- a/t/t7508-status.sh
+++ b/t/t7508-status.sh
@@ -381,12 +381,13 @@ test_expect_success 'status --porcelain ignores relative paths setting' '
test_expect_success 'setup unique colors' '
- git config status.color.untracked blue
+ git config status.color.untracked blue &&
+ git config status.color.branch green
'
cat >expect <<\EOF
-# On branch master
+# On branch <GREEN>master<RESET>
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
diff --git a/wt-status.c b/wt-status.c
index d9f3d9fe93..19c9cb1d23 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -21,6 +21,7 @@ static char default_wt_status_colors[][COLOR_MAXLEN] = {
GIT_COLOR_RED, /* WT_STATUS_UNMERGED */
GIT_COLOR_GREEN, /* WT_STATUS_LOCAL_BRANCH */
GIT_COLOR_RED, /* WT_STATUS_REMOTE_BRANCH */
+ GIT_COLOR_NORMAL, /* WT_STATUS_ONBRANCH */
};
static const char *color(int slot, struct wt_status *s)
@@ -625,7 +626,8 @@ static void wt_status_print_tracking(struct wt_status *s)
void wt_status_print(struct wt_status *s)
{
- const char *branch_color = color(WT_STATUS_HEADER, s);
+ const char *branch_color = color(WT_STATUS_ONBRANCH, s);
+ const char *branch_status_color = color(WT_STATUS_HEADER, s);
if (s->branch) {
const char *on_what = "On branch ";
@@ -634,11 +636,12 @@ void wt_status_print(struct wt_status *s)
branch_name += 11;
else if (!strcmp(branch_name, "HEAD")) {
branch_name = "";
- branch_color = color(WT_STATUS_NOBRANCH, s);
+ branch_status_color = color(WT_STATUS_NOBRANCH, s);
on_what = "Not currently on any branch.";
}
color_fprintf(s->fp, color(WT_STATUS_HEADER, s), "# ");
- color_fprintf_ln(s->fp, branch_color, "%s%s", on_what, branch_name);
+ color_fprintf(s->fp, branch_status_color, "%s", on_what);
+ color_fprintf_ln(s->fp, branch_color, "%s", branch_name);
if (!s->is_initial)
wt_status_print_tracking(s);
}
diff --git a/wt-status.h b/wt-status.h
index 9df9c9fad2..20b17cf439 100644
--- a/wt-status.h
+++ b/wt-status.h
@@ -13,7 +13,9 @@ enum color_wt_status {
WT_STATUS_NOBRANCH,
WT_STATUS_UNMERGED,
WT_STATUS_LOCAL_BRANCH,
- WT_STATUS_REMOTE_BRANCH
+ WT_STATUS_REMOTE_BRANCH,
+ WT_STATUS_ONBRANCH,
+ WT_STATUS_MAXSLOT
};
enum untracked_status_type {
@@ -46,7 +48,7 @@ struct wt_status {
int show_ignored_files;
enum untracked_status_type show_untracked_files;
const char *ignore_submodule_arg;
- char color_palette[WT_STATUS_REMOTE_BRANCH+1][COLOR_MAXLEN];
+ char color_palette[WT_STATUS_MAXSLOT][COLOR_MAXLEN];
/* These are computed during processing of the individual sections */
int commitable;