On Mon, 2017-06-12 at 17:37 -0400, Jeff King wrote: > On Mon, Jun 12, 2017 at 02:31:25PM -0700, Junio C Hamano wrote: > > > I think "staged for commit" still makes perfect sense even when > > > we are > > > just asking "what's the current status" and not "what would it > > > look like > > > if I were to commit". > > > > > > And avoiding the word "index" is worth-while here, I think. I am > > > not in > > > general of the "let's hide the index" camp" but it is a technical > > > term. > > > If we can say the same thing in a way that is understood both by > > > people > > > who know what the index is and people who do not, that seems like > > > a win. > > > > I do not mind "Changes not staged yet:". The point was not about > > getting rid of "stage" but about not mentioning "commit", because > > stepping back a bit, if the readers are prepared to accept these > > messages in the mindset that they are guiding them toward their > > next > > commit, "I find 'Initial commit' confusing" would not have been an > > issue in the first place. > > I think the difference is that "Initial commit" is talking about a > _specific_ commit. If we're not working on one, it doesn't make much > sense. But "staged for commit" is not necessarily talking about a > specific commit; we are talking about the purpose of staging > something > in general. You could equally well say "staged for committing" > (though I > think the shorter word sounds more natural). > > Likewise with "to be committed". > > > If we can get rid of 'yet' and 'already' from the above two, that > > would be even better. The point of the exercise is to be > > understood > > by those who do not think in terms of 'preparing for the next > > commit', > > so 'yet', 'already', 'to be committed' are all counter-productive > > for that goal. Those who accept the 'description of the current > > state in the context of preparing for the next commit' are not the > > ones we are trying to help with the suggested three changes. > > I agree that is the goal. My point was that the existing messages are > OK > even if you aren't thinking of preparing for the next commit. Saying > "this is in the index" and "this is staged" are synonyms. Saying > "this > is staged for commit" is likewise a synonym, unless there is some > other > reason we stage things. > > -Peff What about, "not making any assumptions" about what the user would think when he views the output of `git status` ? Why not try some general messages like, * Staged changes * Unstaged changes instead of the messages such as * Changes to be committed, Changes already in the index * Changes not staged for commit, Changes not yet in the index which seem to make assumptions about the user who view the output ? A typical patch could be found below, diff --git a/builtin/commit.c b/builtin/commit.c index 1d805f5da..3ed8e40bc 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -1364,6 +1364,7 @@ int cmd_status(int argc, const char **argv, const char *prefix) usage_with_options(builtin_status_usage, builtin_status_options); status_init_config(&s, git_status_config); + s.commit_template = 1; argc = parse_options(argc, argv, prefix, builtin_status_options, builtin_status_usage, 0); diff --git a/wt-status.c b/wt-status.c index 037548496..55a7bd757 100644 --- a/wt-status.c +++ b/wt-status.c @@ -196,9 +196,14 @@ 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, _("Staged changes:")); + if (!s->hints) return; + if (s->whence != FROM_COMMIT) ; /* NEEDSWORK: use "git reset --unresolve"??? */ else if (!s->is_initial) @@ -214,7 +219,11 @@ 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, _("Unstaged changes:")); + if (!s->hints) return; if (!has_deleted) @@ -1576,7 +1585,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 commits 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 6018c627b..38bb24ef3 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;