Skip to content

Commit

Permalink
status: show 'revert' state and status hint
Browse files Browse the repository at this point in the history
This is the logical equivalent for "git status" of 3ee4452 (bash: teach
__git_ps1 about REVERT_HEAD).

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Matthieu Moy authored and Junio C Hamano committed Apr 2, 2013
1 parent cc3e4eb commit db4ef44
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 0 deletions.
57 changes: 57 additions & 0 deletions t/t7512-status-help.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 <file>..." to unstage)
# (use "git add <file>..." 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 <file>..." 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
23 changes: 23 additions & 0 deletions wt-status.c
Original file line number Diff line number Diff line change
Expand Up @@ -965,6 +965,24 @@ 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\")"));
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)
Expand Down Expand Up @@ -1113,6 +1131,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);
Expand All @@ -1130,6 +1151,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_progress(s, state, state_color);
else if (state->revert_in_progress)
show_revert_in_progress(s, state, state_color);
if (state->bisect_in_progress)
show_bisect_in_progress(s, state, state_color);
}
Expand Down
1 change: 1 addition & 0 deletions wt-status.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ struct wt_status_state {
int rebase_interactive_in_progress;
int cherry_pick_in_progress;
int bisect_in_progress;
int revert_in_progress;
char *branch;
char *onto;
char *detached_from;
Expand Down

0 comments on commit db4ef44

Please sign in to comment.