From bb914b14c9d2c1c630512291fe4ca276e69b6e00 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Mon, 8 Sep 2008 00:05:02 +0200 Subject: [PATCH 1/2] wt-status: Split header generation into three functions Reorganize header generation so that all header text related to each block is in one place. This adds a function, but makes it easier to see what is generated in each case. It also allows for easy tweaking of individual headers. Signed-off-by: Junio C Hamano --- wt-status.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/wt-status.c b/wt-status.c index 889e50f89f..23702a25c4 100644 --- a/wt-status.c +++ b/wt-status.c @@ -22,12 +22,6 @@ static char wt_status_colors[][COLOR_MAXLEN] = { "\033[31m", /* WT_STATUS_NOBRANCH: red */ }; -static const char use_add_msg[] = -"use \"git add ...\" to update what will be committed"; -static const char use_add_rm_msg[] = -"use \"git add/rm ...\" to update what will be committed"; -static const char use_add_to_include_msg[] = -"use \"git add ...\" to include in what will be committed"; enum untracked_status_type show_untracked_files = SHOW_NORMAL_UNTRACKED_FILES; static int parse_status_slot(const char *var, int offset) @@ -76,12 +70,23 @@ static void wt_status_print_cached_header(struct wt_status *s) color_fprintf_ln(s->fp, c, "#"); } -static void wt_status_print_header(struct wt_status *s, - const char *main, const char *sub) +static void wt_status_print_dirty_header(struct wt_status *s, + int has_deleted) { const char *c = color(WT_STATUS_HEADER); - color_fprintf_ln(s->fp, c, "# %s:", main); - color_fprintf_ln(s->fp, c, "# (%s)", sub); + color_fprintf_ln(s->fp, c, "# Changed but not updated:"); + if (!has_deleted) + color_fprintf_ln(s->fp, c, "# (use \"git add ...\" to update what will be committed)"); + else + color_fprintf_ln(s->fp, c, "# (use \"git add/rm ...\" to update what will be committed)"); + color_fprintf_ln(s->fp, c, "#"); +} + +static void wt_status_print_untracked_header(struct wt_status *s) +{ + const char *c = color(WT_STATUS_HEADER); + color_fprintf_ln(s->fp, c, "# Untracked files:"); + color_fprintf_ln(s->fp, c, "# (use \"git add ...\" to include in what will be committed)"); color_fprintf_ln(s->fp, c, "#"); } @@ -166,14 +171,14 @@ static void wt_status_print_changed_cb(struct diff_queue_struct *q, struct wt_status *s = data; int i; if (q->nr) { - const char *msg = use_add_msg; + int has_deleted = 0; s->workdir_dirty = 1; for (i = 0; i < q->nr; i++) if (q->queue[i]->status == DIFF_STATUS_DELETED) { - msg = use_add_rm_msg; + has_deleted = 1; break; } - wt_status_print_header(s, "Changed but not updated", msg); + wt_status_print_dirty_header(s, has_deleted); } for (i = 0; i < q->nr; i++) wt_status_print_filepair(s, WT_STATUS_CHANGED, q->queue[i]); @@ -291,8 +296,7 @@ static void wt_status_print_untracked(struct wt_status *s) } if (!shown_header) { s->workdir_untracked = 1; - wt_status_print_header(s, "Untracked files", - use_add_to_include_msg); + wt_status_print_untracked_header(s); shown_header = 1; } color_fprintf(s->fp, color(WT_STATUS_HEADER), "#\t"); From 4d6e4c4d34435c777bd844fe5ee0ec1ca06ffa4a Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Mon, 8 Sep 2008 00:05:03 +0200 Subject: [PATCH 2/2] wt-status: Teach how to discard changes in the working directory This is a question that comes up a lot in #git. Signed-off-by: Junio C Hamano --- t/t7502-status.sh | 10 ++++++++++ wt-status.c | 1 + 2 files changed, 11 insertions(+) diff --git a/t/t7502-status.sh b/t/t7502-status.sh index c8e4c2e7b4..1905fb34cd 100755 --- a/t/t7502-status.sh +++ b/t/t7502-status.sh @@ -46,6 +46,7 @@ cat > expect << \EOF # # Changed but not updated: # (use "git add ..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: dir1/modified # @@ -76,6 +77,7 @@ cat >expect <..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: dir1/modified # @@ -104,6 +106,7 @@ cat >expect <..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: dir1/modified # @@ -138,6 +141,7 @@ cat >expect <..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: dir1/modified # @@ -174,6 +178,7 @@ cat > expect << \EOF # # Changed but not updated: # (use "git add ..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: modified # @@ -204,6 +209,7 @@ cat > expect << \EOF # # Changed but not updated: # (use "git add ..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: dir1/modified # @@ -267,6 +273,7 @@ cat >expect <..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: dir1/modified # @@ -297,6 +304,7 @@ cat >expect <..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: dir1/modified # @@ -326,6 +334,7 @@ cat >expect <..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: dir1/modified # @@ -357,6 +366,7 @@ cat >expect <..." to update what will be committed) +# (use "git checkout -- ..." to discard changes in working directory) # # modified: dir1/modified # diff --git a/wt-status.c b/wt-status.c index 23702a25c4..7cf890f243 100644 --- a/wt-status.c +++ b/wt-status.c @@ -79,6 +79,7 @@ static void wt_status_print_dirty_header(struct wt_status *s, color_fprintf_ln(s->fp, c, "# (use \"git add ...\" to update what will be committed)"); else color_fprintf_ln(s->fp, c, "# (use \"git add/rm ...\" to update what will be committed)"); + color_fprintf_ln(s->fp, c, "# (use \"git checkout -- ...\" to discard changes in working directory)"); color_fprintf_ln(s->fp, c, "#"); }