Kaartic Sivaraam <kaarticsivaraam91...@gmail.com> writes:

>> Adding a bit to "struct wt_status" is a good first step to allow all
>> three (i.e. in addition to "Initial commit" and "Changes to be
>> committed", "Changes not staged for commit" is the other one that
>> shares this potential confusion factor) to be phrased in a way that
>> is more appropriate in an answer to the question "what is the status
>> of my working area?", I would think.
>> 
>> Thanks.
>> 
> It seems that the current change has to be discarded altogether and
> further the change required doesn't look trivial. This seems to warrant
> some bit of research of the code base. As a first step I would like to
> know which part of the code base creates the commit template. I guess
> much can't be done without knowing how it's created.

Perhaps something along this line (warning: not even compile
tested)?

 builtin/commit.c |  1 +
 wt-status.c      | 15 ++++++++++++---
 wt-status.h      |  1 +
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/builtin/commit.c b/builtin/commit.c
index da1ba4c862..ffb2d71d3d 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1652,6 +1652,7 @@ int cmd_commit(int argc, const char **argv, const char 
*prefix)
                usage_with_options(builtin_commit_usage, 
builtin_commit_options);
 
        status_init_config(&s, git_commit_config);
+       s.commit_template = 1;
        status_format = STATUS_FORMAT_NONE; /* Ignore status.short */
        s.colopts = 0;
 
diff --git a/wt-status.c b/wt-status.c
index 25aafc35c8..006aaf9e76 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -196,7 +196,10 @@ static void wt_longstatus_print_cached_header(struct 
wt_status *s)
 {
        const char *c = color(WT_STATUS_HEADER, s);
 
-       status_printf_ln(s, c, _("Changes to be committed:"));
+       if (s->commit_template)
+               status_printf_ln(s, c, _("Changes to be committed:"));
+       else
+               status_printf_ln(s, c, _("Changes already in the index:"));
        if (!s->hints)
                return;
        if (s->whence != FROM_COMMIT)
@@ -214,7 +217,10 @@ static void wt_longstatus_print_dirty_header(struct 
wt_status *s,
 {
        const char *c = color(WT_STATUS_HEADER, s);
 
-       status_printf_ln(s, c, _("Changes not staged for commit:"));
+       if (s->commit_template)
+               status_printf_ln(s, c, _("Changes not staged for commit:"));
+       else
+               status_printf_ln(s, c, _("Changes not yet in the index:"));
        if (!s->hints)
                return;
        if (!has_deleted)
@@ -1578,7 +1584,10 @@ static void wt_longstatus_print(struct wt_status *s)
 
        if (s->is_initial) {
                status_printf_ln(s, color(WT_STATUS_HEADER, s), "%s", "");
-               status_printf_ln(s, color(WT_STATUS_HEADER, s), _("Initial 
commit"));
+               status_printf_ln(s, color(WT_STATUS_HEADER, s),
+                                s->commit_template
+                                ? _("Initial commit")
+                                : _("No commit yet on the branch"));
                status_printf_ln(s, color(WT_STATUS_HEADER, s), "%s", "");
        }
 
diff --git a/wt-status.h b/wt-status.h
index 8a3864783b..17f72f2346 100644
--- a/wt-status.h
+++ b/wt-status.h
@@ -77,6 +77,7 @@ struct wt_status {
        unsigned colopts;
        int null_termination;
        int show_branch;
+       int commit_template;
        int hints;
 
        enum wt_status_format status_format;

Reply via email to