Thread (16 messages) flat view 16 messages, 5 authors, 2017-06-19

Re: [PATCH] wt-status.c: Modified status message shown for a parent-less branch

From: Kaartic Sivaraam <hidden>
Date: 2017-06-15 08:19:47
Subsystem: the rest · Maintainer: Linus Torvalds

Possibly related (same subject, not in this thread)

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:
quoted
quoted
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".
quoted
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;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help