Kaartic Sivaraam <[email protected]> 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;