From: Mathieu Lienard--Mayor <Mathieu.Lienard--Mayor@ensimag.imag.fr>
To: git@vger.kernel.org
Cc: gitster@pobox.com,
Mathieu Lienard--Mayor <Mathieu.Lienard--Mayor@ensimag.imag.fr>,
Jorge Juan Garcia Garcia
<Jorge-Juan.Garcia-Garcia@ensimag.imag.fr>,
Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Subject: [PATCH] status: display the SHA1 of the commit being currently processed
Date: Mon, 17 Jun 2013 14:10:04 +0200 [thread overview]
Message-ID: <1371471004-9069-1-git-send-email-Mathieu.Lienard--Mayor@ensimag.imag.fr> (raw)
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@ensimag.imag.fr>
Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-Garcia@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
---
-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
next reply other threads:[~2013-06-17 12:10 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-17 12:10 Mathieu Lienard--Mayor [this message]
2013-06-17 12:44 ` [PATCH] status: display the SHA1 of the commit being currently processed Thomas Adam
2013-06-17 13:10 ` Peter Krefting
2013-06-17 13:33 ` Mathieu Liénard--Mayor
2013-06-17 13:54 ` Peter Krefting
2013-06-17 13:57 ` Mathieu Liénard--Mayor
2013-06-17 15:10 ` Johannes Sixt
2013-06-17 16:33 ` Junio C Hamano
2013-06-20 7:56 ` Peter Krefting
2013-06-20 8:10 ` Johannes Sixt
2013-06-20 18:11 ` Junio C Hamano
2013-06-21 5:34 ` Johannes Sixt
2013-06-21 14:23 ` Junio C Hamano
2013-06-17 18:37 ` Junio C Hamano
2013-06-18 10:12 ` Mathieu Liénard--Mayor
2013-06-18 16:32 ` Junio C Hamano
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1371471004-9069-1-git-send-email-Mathieu.Lienard--Mayor@ensimag.imag.fr \
--to=mathieu.lienard--mayor@ensimag.imag.fr \
--cc=Jorge-Juan.Garcia-Garcia@ensimag.imag.fr \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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.
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 NNTP newsgroup(s).