When in the middle of a rebase, it can be annoying to go in .git in order to find the SHA1 of the commit where the rebase stopped. git-status now includes this information in its default output. With this new information, the message is now shorter, to avoid too long lines. The new message looks like: $ git status HEAD detached from 33e516f Editing c346c87 while rebasing branch 'rebase_i_edit' on 'f90e540'. Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--Mayor@xxxxxxxxxxxxxxx> Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-Garcia@xxxxxxxxxxxxxxx> Signed-off-by: Matthieu Moy <Matthieu.Moy@xxxxxxxxxxxxxxx> --- -changes in the tests to match the new status output -read file rebase-merge/stopped_sha to include the SHA in status output t/t7512-status-help.sh | 36 ++++++++++++++++++++++++------------ wt-status.c | 25 +++++++++++++++++++++---- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/t/t7512-status-help.sh b/t/t7512-status-help.sh index bf08d4e..dc93d77 100755 --- a/t/t7512-status-help.sh +++ b/t/t7512-status-help.sh @@ -189,10 +189,11 @@ test_expect_success 'status when rebasing -i in edit mode' ' test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~2) && TGT=$(git rev-parse --short two_rebase_i) && + SHA=$(git rev-parse --short three_rebase_i) && git rebase -i HEAD~2 && cat >expected <<-EOF && # HEAD detached from $TGT - # You are currently editing a commit while rebasing branch '\''rebase_i_edit'\'' on '\''$ONTO'\''. + # Editing $SHA while rebasing branch '\''rebase_i_edit'\'' on '\''$ONTO'\''. # (use "git commit --amend" to amend the current commit) # (use "git rebase --continue" once you are satisfied with your changes) # @@ -217,9 +218,10 @@ test_expect_success 'status when splitting a commit' ' git rebase -i HEAD~3 && git reset HEAD^ && TGT=$(git rev-parse --short HEAD) && + SHA=$(git rev-parse --short three_split) && cat >expected <<-EOF && # HEAD detached at $TGT - # You are currently splitting a commit while rebasing branch '\''split_commit'\'' on '\''$ONTO'\''. + # Splitting $SHA while rebasing branch '\''split_commit'\'' on '\''$ONTO'\''. # (Once your working directory is clean, run "git rebase --continue") # # Changes not staged for commit: @@ -247,11 +249,12 @@ test_expect_success 'status after editing the last commit with --amend during a test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && TGT=$(git rev-parse --short three_amend) && + SHA=$(git rev-parse --short four_amend) && git rebase -i HEAD~3 && git commit --amend -m "foo" && cat >expected <<-EOF && # HEAD detached from $TGT - # You are currently editing a commit while rebasing branch '\''amend_last'\'' on '\''$ONTO'\''. + # Editing $SHA while rebasing branch '\''amend_last'\'' on '\''$ONTO'\''. # (use "git commit --amend" to amend the current commit) # (use "git rebase --continue" once you are satisfied with your changes) # @@ -277,11 +280,12 @@ test_expect_success 'status: (continue first edit) second edit' ' export FAKE_LINES && test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && + SHA=$(git rev-parse --short three_edits) && git rebase -i HEAD~3 && git rebase --continue && cat >expected <<-EOF && # HEAD detached from $ONTO - # You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. + # Editing $SHA while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. # (use "git commit --amend" to amend the current commit) # (use "git rebase --continue" once you are satisfied with your changes) # @@ -298,12 +302,13 @@ test_expect_success 'status: (continue first edit) second edit and split' ' export FAKE_LINES && test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && + SHA=$(git rev-parse --short three_edits) && git rebase -i HEAD~3 && git rebase --continue && git reset HEAD^ && cat >expected <<-EOF && # HEAD detached from $ONTO - # You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. + # Splitting $SHA while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. # (Once your working directory is clean, run "git rebase --continue") # # Changes not staged for commit: @@ -325,12 +330,13 @@ test_expect_success 'status: (continue first edit) second edit and amend' ' export FAKE_LINES && test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && + SHA=$(git rev-parse --short three_edits) && git rebase -i HEAD~3 && git rebase --continue && git commit --amend -m "foo" && cat >expected <<-EOF && # HEAD detached from $ONTO - # You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. + # Editing $SHA while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. # (use "git commit --amend" to amend the current commit) # (use "git rebase --continue" once you are satisfied with your changes) # @@ -347,12 +353,13 @@ test_expect_success 'status: (amend first edit) second edit' ' export FAKE_LINES && test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && + SHA=$(git rev-parse --short three_edits) && git rebase -i HEAD~3 && git commit --amend -m "a" && git rebase --continue && cat >expected <<-EOF && # HEAD detached from $ONTO - # You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. + # Editing $SHA while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. # (use "git commit --amend" to amend the current commit) # (use "git rebase --continue" once you are satisfied with your changes) # @@ -369,13 +376,14 @@ test_expect_success 'status: (amend first edit) second edit and split' ' export FAKE_LINES && test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && + SHA=$(git rev-parse --short three_edits) && git rebase -i HEAD~3 && git commit --amend -m "b" && git rebase --continue && git reset HEAD^ && cat >expected <<-EOF && # HEAD detached from $ONTO - # You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. + # Splitting $SHA while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. # (Once your working directory is clean, run "git rebase --continue") # # Changes not staged for commit: @@ -397,13 +405,14 @@ test_expect_success 'status: (amend first edit) second edit and amend' ' export FAKE_LINES && test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && + SHA=$(git rev-parse --short three_edits) && git rebase -i HEAD~3 && git commit --amend -m "c" && git rebase --continue && git commit --amend -m "d" && cat >expected <<-EOF && # HEAD detached from $ONTO - # You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. + # Editing $SHA while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. # (use "git commit --amend" to amend the current commit) # (use "git rebase --continue" once you are satisfied with your changes) # @@ -420,6 +429,7 @@ test_expect_success 'status: (split first edit) second edit' ' export FAKE_LINES && test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && + SHA=$(git rev-parse --short three_edits) && git rebase -i HEAD~3 && git reset HEAD^ && git add main.txt && @@ -427,7 +437,7 @@ test_expect_success 'status: (split first edit) second edit' ' git rebase --continue && cat >expected <<-EOF && # HEAD detached from $ONTO - # You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. + # Editing $SHA while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. # (use "git commit --amend" to amend the current commit) # (use "git rebase --continue" once you are satisfied with your changes) # @@ -444,6 +454,7 @@ test_expect_success 'status: (split first edit) second edit and split' ' export FAKE_LINES && test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && + SHA=$(git rev-parse --short three_edits) && git rebase -i HEAD~3 && git reset HEAD^ && git add main.txt && @@ -452,7 +463,7 @@ test_expect_success 'status: (split first edit) second edit and split' ' git reset HEAD^ && cat >expected <<-EOF && # HEAD detached from $ONTO - # You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. + # Splitting $SHA while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. # (Once your working directory is clean, run "git rebase --continue") # # Changes not staged for commit: @@ -474,6 +485,7 @@ test_expect_success 'status: (split first edit) second edit and amend' ' export FAKE_LINES && test_when_finished "git rebase --abort" && ONTO=$(git rev-parse --short HEAD~3) && + SHA=$(git rev-parse --short three_edits) && git rebase -i HEAD~3 && git reset HEAD^ && git add main.txt && @@ -482,7 +494,7 @@ test_expect_success 'status: (split first edit) second edit and amend' ' git commit --amend -m "h" && cat >expected <<-EOF && # HEAD detached from $ONTO - # You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. + # Editing $SHA while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''. # (use "git commit --amend" to amend the current commit) # (use "git rebase --continue" once you are satisfied with your changes) # diff --git a/wt-status.c b/wt-status.c index bf84a86..5f5cddf 100644 --- a/wt-status.c +++ b/wt-status.c @@ -885,8 +885,19 @@ static void show_rebase_in_progress(struct wt_status *s, struct wt_status_state *state, const char *color) { + char *stopped_sha = read_line_from_git_path("rebase-merge/stopped-sha"); + int must_free_stopped_sha = 1; struct stat st; + /* + * If the file stopped-sha does not exist + * we go back to the old output saying "a commit" + * instead of providing the commit's SHA1. + */ + if (!stopped_sha) { + stopped_sha = "a commit"; + must_free_stopped_sha = 0; + } if (has_unmerged(s)) { if (state->branch) status_printf_ln(s, color, @@ -919,24 +930,28 @@ static void show_rebase_in_progress(struct wt_status *s, } else if (split_commit_in_progress(s)) { if (state->branch) status_printf_ln(s, color, - _("You are currently splitting a commit while rebasing branch '%s' on '%s'."), + _("Splitting %s while rebasing branch '%s' on '%s'."), + stopped_sha, state->branch, state->onto); else status_printf_ln(s, color, - _("You are currently splitting a commit during a rebase.")); + _("Splitting %s during a rebase."), + stopped_sha); if (advice_status_hints) status_printf_ln(s, color, _(" (Once your working directory is clean, run \"git rebase --continue\")")); } else { if (state->branch) status_printf_ln(s, color, - _("You are currently editing a commit while rebasing branch '%s' on '%s'."), + _("Editing %s while rebasing branch '%s' on '%s'."), + stopped_sha, state->branch, state->onto); else status_printf_ln(s, color, - _("You are currently editing a commit during a rebase.")); + _("Editing %s during a rebase."), + stopped_sha); if (advice_status_hints && !s->amend) { status_printf_ln(s, color, _(" (use \"git commit --amend\" to amend the current commit)")); @@ -945,6 +960,8 @@ static void show_rebase_in_progress(struct wt_status *s, } } wt_status_print_trailer(s); + if (must_free_stopped_sha) + free(stopped_sha); } static void show_cherry_pick_in_progress(struct wt_status *s, -- 1.7.8 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html