git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Kong Lucien <Lucien.Kong@ensimag.imag.fr>
Cc: git@vger.kernel.org,
	Duperray Valentin <Valentin.Duperray@ensimag.imag.fr>,
	Jonas Franck <Franck.Jonas@ensimag.imag.fr>,
	Nguy Thomas <Thomas.Nguy@ensimag.imag.fr>,
	Nguyen Huynh Khoi Nguyen 
	<Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>,
	Moy Matthieu <Matthieu.Moy@grenoble-inp.fr>
Subject: Re: [PATCHv6 1/4] wt-status.*: better advices for git status added
Date: Sun, 03 Jun 2012 14:06:19 -0700	[thread overview]
Message-ID: <7v7gvoyuk4.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <1338748217-16440-1-git-send-email-Lucien.Kong@ensimag.imag.fr> (Kong Lucien's message of "Sun, 3 Jun 2012 20:30:14 +0200")

Kong Lucien <Lucien.Kong@ensimag.imag.fr> writes:

> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 915cb5a..670945d 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -162,6 +162,10 @@ advice.*::
>  		Directions on how to stage/unstage/add shown in the
>  		output of linkgit:git-status[1] and the template shown
>  		when writing commit messages.
> +		Show directions on how to proceed from the current
> +		state in the output of linkgit:git-status[1] and in
> +		the template shown when writing commit messages in
> +		linkgit:git-commit[1].

I meant these four lines to _replace_, not _add_.

Reading the three lines we can see in the context before this hunk,
don't you agree that they are now unnecessary because what they say
is merely a subset of the four lines you added say?

> diff --git a/t/t7060-wtstatus.sh b/t/t7060-wtstatus.sh
> index b8cb490..61d1f38 100755
> --- a/t/t7060-wtstatus.sh
> +++ b/t/t7060-wtstatus.sh
> @@ -118,4 +121,68 @@ test_expect_success 'git diff-index --cached -C shows 2 copies + 1 unmerged' '
> ...
> +test_expect_success 'status when conflicts with add and rm advice (both deleted)' '
> +	git init git &&
> +	cd git &&
> +	test_commit init main.txt init &&

Please do not chdir around outside a subshell.

"This is the last test in this script" is not an excuse, as that
will forbid others from improving the script by adding new ones
later.

> diff --git a/wt-status.c b/wt-status.c
> index dd6d8c4..2460e20 100644
> --- a/wt-status.c
> +++ b/wt-status.c
> @@ -728,6 +729,169 @@ static void wt_status_print_tracking(struct wt_status *s)
> ...
> +static void show_merge_in_progress(struct wt_status *s,
> +				struct wt_status_state *state,
> +				const char *color)
> +{
> +	if (has_unmerged(s)) {
> +		status_printf_ln(s, color, _("You have unmerged paths."));
> +		if (advice_status_hints)
> +			status_printf_ln(s, color,
> +				_("  (fix conflicts and run \"git commit\")"));
> +	} else {
> +		status_printf_ln(s, color,
> +			_("All conflicts fixed but you are still merging."));

Thanks for rephrasing; this reads much easier.

> +static void show_am_in_progress(struct wt_status *s,
> +				struct wt_status_state *state,
> +				const char *color)
> +{
> +	status_printf_ln(s, color,
> +		_("You are in the middle of an am session."));
> +	if (state->am_empty_patch) {
> +		status_printf_ln(s, color,
> +			_("The current patch is empty; run \"git am --skip\" to skip it."));

Isn't everything after "; " an advice?

> +		if (advice_status_hints)
> +			status_printf_ln(s, color,
> +				_("  (use \"git am --abort\" to restore the original branch)"));
> +	} else if (advice_status_hints) {
> +		status_printf_ln(s, color,
> +			_("  (when you have fixed this problem run \"git am --resolved\")"));
> +		status_printf_ln(s, color,
> +			_("  (use \"git am --skip\" to skip this patch)"));
> +		status_printf_ln(s, color,
> +			_("  (use \"git am --abort\" to restore the original branch)"));
> +	}

I think the structure can simply be:

	if (am_empty_patch)
		"The current patch is empty.";
	if (advice_status_hints) {
		"  (use --abort to restore)";
		"  (use --skip to skip)";
                if (!am_empty_patch)
			"  (use --resolved after you are done)";
	}

Note that I am not suggesting to change the wording of the message
in the above; just showing the flow-structure.

Also when you are in the middle of "git am -3", there may be
unmerged entries in the index; do we want to suggest "add/rm" to
resolve to fill in the missing detail of "fix" in your "when you
have fixed this problem" message?

We may want to decide how detailed we want to make the help texts;
the same fuzziness exists in "fix conflicts and then" at the
beginning of show_rebase_in_progress().

> +static void show_rebase_in_progress(struct wt_status *s,
> +				struct wt_status_state *state,
> +				const char *color)
> +{
> +	if (has_unmerged(s)) {
> +		status_printf_ln(s, color, _("You are currently rebasing."));
> +		if (advice_status_hints) {
> +			status_printf_ln(s, color,
> +				_("  (fix conflicts and then run \"git rebase --continue\")"));

> +			status_printf_ln(s, color,
> +				_("  (use \"git rebase --skip\" to skip this patch)"));
> +			status_printf_ln(s, color,
> +				_("  (use \"git rebase --abort\" to check out the original branch)"));
> +		}
> +	} else if (state->rebase_in_progress) {
> +		status_printf_ln(s, color, _("You are currently rebasing."));
> +		if (advice_status_hints)
> +			status_printf_ln(s, color,
> +				_("  (all conflicts fixed: run \"git rebase --continue\")"));
> +	} else {
> +		status_printf_ln(s, color, _("You are currently editing a commit during a rebase."));
> +		if (advice_status_hints && !s->amend) {
> +			status_printf_ln(s, color,
> +				_("  (use \"git commit --amend\" to amend the current commit)"));
> +			status_printf_ln(s, color,
> +				_("  (use \"git rebase --continue\" once you are satisfied with your changes)"));
> +		}

This last "else" block is taken when running "rebase -i" and there
is no longer any unmerged index entry.  I wonder if the message from
the first printf_ln needs to be clarified further depending on the
context.

Specifically, in this sequence:

	- the user marked a commit as "pick";
        - replaying of that commit resulted in conflicts;
        - the user edited files and used add/rm to resolve conflicts;
        - the user did one of these:
	  1. "git status"
          2. "git commit" without "--amend"
          3. "git commit --amend"

can this message come up?

In such a case, "You are currently editing a commit" is actively
wrong.  The user has finished resolving the conflict and are about
to record the result.  Also, "git status" and "git commit" without
"--amend" are both sensible commands in this situation, but running
"git commit --amend" is likely to be a mistake, no?

	Side note: I am not absolutely sure if "--amend" is always a
	mistake in this situation; I'd very much appreciate users
	who creatively use "rebase -i" in real life to offer valid
	uses of "commit --amend" in this scenario.

> +static void show_cherry_pick_in_progress(struct wt_status *s,
> +					struct wt_status_state *state,
> +					const char *color)
> +{
> +	if (has_unmerged(s)) {
> +		status_printf_ln(s, color, _("You are currently cherry-picking."));
> +		if (advice_status_hints)
> +			status_printf_ln(s, color,
> +				_("  (fix conflicts and run \"git commit\")"));
> +	} else {
> +		status_printf_ln(s, color, _("You are currently cherry-picking."));
> +		if (advice_status_hints)
> +			status_printf_ln(s, color,
> +				_("  (all conflicts fixed: run \"git commit\")"));
> +	}

The current status is the same in either arm of if/else; shouldn't
they be lifted outside, i.e.

	"You are currently cherry-picking";
        if (advice_status_hints) {
        	if (has_unmerged(s))
			"  (fix conflicts ...)";
		else
                	"  (all fixed, run ...)";
	}

The rest of this patch I did not quote looked all very much
sensible.

Thanks.

  parent reply	other threads:[~2012-06-03 21:06 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-24  9:37 [PATCH/RFC] t7512-status-warnings.sh : better advices for git status Kong Lucien
2012-05-24 17:31 ` Matthieu Moy
2012-05-26 12:38 ` [PATCHv2 1/2] wt-status: " Kong Lucien
2012-05-26 12:38   ` [PATCHv2 2/2] t7512-status-warnings.sh: " Kong Lucien
2012-05-27 12:57     ` Matthieu Moy
2012-05-28  8:43     ` Matthieu Moy
2012-05-26 13:01   ` [PATCHv2 1/2] wt-status: " Nguyen Thai Ngoc Duy
2012-05-26 17:17     ` NGUY Thomas
2012-05-27 12:58     ` Matthieu Moy
2012-05-27 13:10   ` Matthieu Moy
2012-05-28  4:57   ` Junio C Hamano
2012-05-28  7:05     ` Matthieu Moy
2012-05-30  4:27       ` Junio C Hamano
2012-05-28 10:54     ` konglu
2012-05-28 17:36   ` [PATCHv3 1/2] wt-status.*: better advices for git status added Kong Lucien
2012-05-28 17:36     ` [PATCHv3 2/2] t7512-status-warnings.sh: better advices for git status Kong Lucien
2012-05-28 20:36       ` Matthieu Moy
2012-05-28 20:23     ` [PATCHv3 1/2] wt-status.*: better advices for git status added Matthieu Moy
2012-05-29 19:22     ` Junio C Hamano
2012-05-30 11:09       ` konglu
2012-05-30 17:24         ` Junio C Hamano
2012-05-31  6:47         ` Matthieu Moy
2012-05-30 13:23     ` [PATCHv4 1/3] " Kong Lucien
2012-05-30 13:23       ` [PATCHv4 2/3] t7512-status-warnings.sh: better advices for git status Kong Lucien
2012-05-30 13:23       ` [PATCHv4 3/3] Advices about 'git rm' during conflicts (unmerged paths) more relevant Kong Lucien
2012-05-30 18:44         ` Junio C Hamano
2012-05-30 21:50           ` konglu
2012-05-31  7:06         ` Matthieu Moy
2012-05-31  7:59           ` konglu
2012-05-30 18:26       ` [PATCHv4 1/3] wt-status.*: better advices for git status added Junio C Hamano
2012-05-30 19:06         ` Junio C Hamano
2012-05-31  6:42         ` Matthieu Moy
2012-05-31  6:44           ` Matthieu Moy
2012-05-31  6:29       ` Matthieu Moy
2012-05-31  6:34         ` Andrew Ardill
2012-05-31 15:15       ` [PATCHv5 " Kong Lucien
2012-05-31 15:15         ` [PATCHv5 2/3] t7512-status-help.sh: better advices for git status Kong Lucien
2012-05-31 15:15         ` [PATCHv5 3/3] status: don't suggest "git rm" or "git add" if not appropriate Kong Lucien
2012-06-01  8:55           ` Matthieu Moy
2012-06-01 12:15           ` Phil Hord
2012-06-01 14:08             ` konglu
2012-06-01 16:38               ` Junio C Hamano
2012-05-31 21:36         ` [PATCHv5 1/3] wt-status.*: better advices for git status added Junio C Hamano
2012-06-01  9:16           ` konglu
2012-06-01  9:26             ` Matthieu Moy
2012-06-01 14:50               ` Junio C Hamano
2012-06-01 16:51             ` Junio C Hamano
2012-06-01 19:39               ` konglu
2012-06-01  8:42         ` Matthieu Moy
2012-06-01 11:27           ` konglu
2012-06-01 12:40             ` Phil Hord
2012-06-01 16:57               ` Junio C Hamano
2012-06-04 18:00                 ` Phil Hord
2012-06-03 18:30         ` [PATCHv6 1/4] " Kong Lucien
2012-06-03 18:30           ` [PATCHv6 2/4] t7512-status-help.sh: better advices for git status Kong Lucien
2012-06-03 21:18             ` Junio C Hamano
2012-06-04 10:04               ` konglu
2012-06-04 15:04                 ` Junio C Hamano
2012-06-04 22:07                 ` Junio C Hamano
2012-06-03 18:30           ` [PATCHv6 3/4] status: don't suggest "git rm" or "git add" if not appropriate Kong Lucien
2012-06-03 19:34             ` Matthieu Moy
2012-06-03 18:30           ` [PATCHv6 4/4] status: better advices when splitting a commit (during rebase -i) Kong Lucien
2012-06-03 22:00             ` Junio C Hamano
2012-06-04 15:35             ` Phil Hord
2012-06-05  9:13               ` konglu
2012-06-03 21:06           ` Junio C Hamano [this message]
2012-06-04  9:51             ` [PATCHv6 1/4] wt-status.*: better advices for git status added konglu
2012-06-04 14:54               ` Junio C Hamano
2012-06-04 17:19           ` [PATCHv7 " Kong Lucien
2012-06-04 17:19             ` [PATCHv7 2/4] t7512-status-help.sh: better advices for git status Kong Lucien
2012-06-04 21:02               ` Matthieu Moy
2012-06-04 23:12               ` Junio C Hamano
2012-06-04 17:19             ` [PATCHv7 3/4] status: don't suggest "git rm" or "git add" if not appropriate Kong Lucien
2012-06-04 17:19             ` [PATCHv7 4/4] status: better advices when splitting a commit (during rebase -i) Kong Lucien
2012-06-04 23:01             ` [PATCHv7 1/4] wt-status.*: better advices for git status added Junio C Hamano
2012-06-05 10:32               ` konglu
2012-06-05 11:33                 ` Matthieu Moy
2012-06-05 20:21             ` [PATCHv8 " Lucien Kong
2012-06-05 20:21               ` [PATCHv8 2/4] t7512-status-help.sh: better advices for git status Lucien Kong
2012-06-05 20:21               ` [PATCHv8 3/4] status: don't suggest "git rm" or "git add" if not appropriate Lucien Kong
2012-06-05 20:21               ` [PATCHv8 4/4] status: better advices when splitting a commit (during rebase -i) Lucien Kong
2012-06-05 21:16                 ` Junio C Hamano
2012-06-08  9:29                   ` konglu
2012-06-08 15:05                     ` Junio C Hamano
2012-06-07 13:17               ` [PATCHv9 1/4] wt-status.*: better advices for git status added Lucien Kong
2012-06-07 13:17                 ` [PATCHv9 2/4] t7512-status-help.sh: better advices for git status Lucien Kong
2012-06-07 13:17                 ` [PATCHv9 3/4] status: don't suggest "git rm" or "git add" if not appropriate Lucien Kong
2012-06-07 13:17                 ` [PATCHv9 4/4] status: better advices when splitting a commit (during rebase -i) Lucien Kong
2012-06-07 18:07                   ` Junio C Hamano
2012-06-07 20:42                   ` Junio C Hamano
2012-06-07 21:05                     ` konglu
2012-06-10 11:17                 ` [PATCHv10 1/4] wt-status.*: better advices for git status added Lucien Kong
2012-06-10 11:17                   ` [PATCHv10 2/4] t7512-status-help.sh: better advices for git status Lucien Kong
2012-06-10 11:17                   ` [PATCHv10 3/4] status: don't suggest "git rm" or "git add" if not appropriate Lucien Kong
2012-06-10 11:17                   ` [PATCHv10 4/4] status: better advices when splitting a commit (during rebase -i) Lucien Kong
2012-06-11 20:21                     ` Junio C Hamano
2012-06-12  7:14                       ` konglu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7v7gvoyuk4.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=Franck.Jonas@ensimag.imag.fr \
    --cc=Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr \
    --cc=Lucien.Kong@ensimag.imag.fr \
    --cc=Matthieu.Moy@grenoble-inp.fr \
    --cc=Thomas.Nguy@ensimag.imag.fr \
    --cc=Valentin.Duperray@ensimag.imag.fr \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).