Re: [PATCH 1/2] status: show 'revert' state and status hint

2013-04-02 Thread Matthieu Moy
Junio C Hamano  writes:

>> +if (advice_status_hints) {
>> +}
>> +if (advice_status_hints)
>> +status_printf_ln(s, color,
>> +_("  (use \"git revert --abort\" to cancel the revert 
>> operation)"));
>
> Why not a single conditional? i.e.
>
>   if (advice_status_hints) {
>   if unmerged
>   fix and continue
>   else
>   say continue
>   you can also say abort
>   }

Oops, you're right. I wrote the code mostly with cut-and-past + edit
from other functions, and didn't notice the obvious refactoring
opportunity.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] status: show 'revert' state and status hint

2013-04-02 Thread Junio C Hamano
Matthieu Moy  writes:

> +static void show_revert_in_progress(struct wt_status *s,
> + struct wt_status_state *state,
> + const char *color)
> +{
> + status_printf_ln(s, color, _("You are currently reverting a commit."));
> + if (advice_status_hints) {
> + if (has_unmerged(s))
> + status_printf_ln(s, color,
> + _("  (fix conflicts and run \"git revert 
> --continue\")"));
> + else
> + status_printf_ln(s, color,
> + _("  (all conflicts fixed: run \"git revert 
> --continue\")"));
> + }
> + if (advice_status_hints)
> + status_printf_ln(s, color,
> + _("  (use \"git revert --abort\" to cancel the revert 
> operation)"));

Why not a single conditional? i.e.

if (advice_status_hints) {
if unmerged
fix and continue
else
say continue
you can also say abort
}

Will queue on 'pu', with an straight-forward "SQUASH???" on top.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/2] status: show 'revert' state and status hint

2013-04-02 Thread Matthieu Moy
This is the logical equivalent for "git status" of 3ee4452 (bash: teach
__git_ps1 about REVERT_HEAD).

Signed-off-by: Matthieu Moy 
---
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -282,6 +282,8 @@ __git_ps1 ()
>   r="|MERGING"
>   elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
>   r="|CHERRY-PICKING"
> + elif [ -f "$g/REVERT_HEAD" ]; then
> + r="|REVERTING"

Good.

It makes sense to also teach "git status" about REVERT_HEAD.

 t/t7512-status-help.sh | 57 ++
 wt-status.c| 24 +
 wt-status.h|  1 +
 3 files changed, 82 insertions(+)

diff --git a/t/t7512-status-help.sh b/t/t7512-status-help.sh
index 06749a6..d745cf4 100755
--- a/t/t7512-status-help.sh
+++ b/t/t7512-status-help.sh
@@ -678,4 +678,61 @@ test_expect_success 'status showing detached from a tag' '
test_i18ncmp expected actual
 '
 
+test_expect_success 'status while reverting commit (conflicts)' '
+   git checkout master &&
+   echo before >to-revert.txt &&
+   test_commit before to-revert.txt &&
+   echo old >to-revert.txt &&
+   test_commit old to-revert.txt &&
+   echo new >to-revert.txt &&
+   test_commit new to-revert.txt &&
+   test_must_fail git revert HEAD^ &&
+   cat >expected <<-EOF
+   # On branch master
+   # You are currently reverting a commit.
+   #   (fix conflicts and run "git revert --continue")
+   #   (use "git revert --abort" to cancel the revert operation)
+   #
+   # Unmerged paths:
+   #   (use "git reset HEAD ..." to unstage)
+   #   (use "git add ..." to mark resolution)
+   #
+   #   both modified:  to-revert.txt
+   #
+   no changes added to commit (use "git add" and/or "git commit -a")
+   EOF
+   git status --untracked-files=no >actual &&
+   test_i18ncmp expected actual
+'
+
+test_expect_success 'status while reverting commit (conflicts resolved)' '
+   echo reverted >to-revert.txt &&
+   git add to-revert.txt &&
+   cat >expected <<-EOF
+   # On branch master
+   # You are currently reverting a commit.
+   #   (all conflicts fixed: run "git revert --continue")
+   #   (use "git revert --abort" to cancel the revert operation)
+   #
+   # Changes to be committed:
+   #   (use "git reset HEAD ..." to unstage)
+   #
+   #   modified:   to-revert.txt
+   #
+   # Untracked files not listed (use -u option to show untracked files)
+   EOF
+   git status --untracked-files=no >actual &&
+   test_i18ncmp expected actual
+'
+
+test_expect_success 'status after reverting commit' '
+   git revert --continue &&
+   cat >expected <<-\EOF
+   # On branch master
+   nothing to commit (use -u to show untracked files)
+   EOF
+   git status --untracked-files=no >actual &&
+   test_i18ncmp expected actual
+'
+
 test_done
diff --git a/wt-status.c b/wt-status.c
index cea8e55..5123c71 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -965,6 +965,25 @@ static void show_cherry_pick_in_progress(struct wt_status 
*s,
wt_status_print_trailer(s);
 }
 
+static void show_revert_in_progress(struct wt_status *s,
+   struct wt_status_state *state,
+   const char *color)
+{
+   status_printf_ln(s, color, _("You are currently reverting a commit."));
+   if (advice_status_hints) {
+   if (has_unmerged(s))
+   status_printf_ln(s, color,
+   _("  (fix conflicts and run \"git revert 
--continue\")"));
+   else
+   status_printf_ln(s, color,
+   _("  (all conflicts fixed: run \"git revert 
--continue\")"));
+   }
+   if (advice_status_hints)
+   status_printf_ln(s, color,
+   _("  (use \"git revert --abort\" to cancel the revert 
operation)"));
+   wt_status_print_trailer(s);
+}
+
 static void show_bisect_in_progress(struct wt_status *s,
struct wt_status_state *state,
const char *color)
@@ -1113,6 +1132,9 @@ void wt_status_get_state(struct wt_status_state *state,
state->bisect_in_progress = 1;
state->branch = read_and_strip_branch("BISECT_START");
}
+   if (!stat(git_path("REVERT_HEAD"), &st)) {
+   state->revert_in_progress = 1;
+   }
 
if (get_detached_from)
wt_status_get_detached_from(state);
@@ -1130,6 +1152,8 @@ static void wt_status_print_state(struct wt_status *s,
show_rebase_in_progress(s, state, state_color);
else if (state->cherry_pick_in_progress)
show_cherry_pick_in