git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dmitry Potapov <dpotapov@gmail.com>
To: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Cc: Dmitry Potapov <dpotapov@gmail.com>
Subject: [PATCH 2/2] git-rebase--interactive: auto amend only edited commit
Date: Tue,  9 Sep 2008 00:42:49 +0400	[thread overview]
Message-ID: <1220906569-26878-2-git-send-email-dpotapov@gmail.com> (raw)
In-Reply-To: <1220906569-26878-1-git-send-email-dpotapov@gmail.com>

"git rebase --continue" issued after git rebase being stop by "edit"
command is trying to amend the last commit using stage changes. However,
if the last commit is not the commit that was marked as "edit" then it
can produce unexpected results.

For instance, after being stop by "edit", I have made some changes to
commit message using "git commit --amend". After that I realized that
I forgot to add some changes to some file. So, I said "git add file"
and the "git rebase --continue". Unfortunately, it caused that the new
commit message was lost.

Another problem is that after being stopped at "edit", the user adds new
commits. In this case, automatic amend behavior of git rebase triggered
by some stage changes causes that not only that the log message of the
last commit is lost but that it will contain also wrong Author and Date
information.

Therefore, this patch restrict automatic amend only to the situation
where HEAD is the commit at which git rebase stop by "edit" command.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
---
 git-rebase--interactive.sh |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 5b2b1e5..84721c9 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -284,7 +284,7 @@ do_next () {
 		pick_one $sha1 ||
 			die_with_patch $sha1 "Could not apply $sha1... $rest"
 		make_patch $sha1
-		: > "$DOTEST"/amend
+		echo $sha1 > "$DOTEST"/amend
 		warn "Stopped at $sha1... $rest"
 		warn "You can amend the commit now, with"
 		warn
@@ -430,6 +430,8 @@ do
 			if test -f "$DOTEST"/amend
 			then
 				amend=$(git rev-parse --verify HEAD)
+				test "$amend" = $(cat "$DOTEST"/amend) ||
+				die "You have uncommitted changes"
 				git reset --soft HEAD^ ||
 				die "Cannot rewind the HEAD"
 			fi
-- 
1.6.0

  reply	other threads:[~2008-09-08 20:44 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-08 20:42 [PATCH 1/2] git-rebase-interactive: do not squash commits on abort Dmitry Potapov
2008-09-08 20:42 ` Dmitry Potapov [this message]
2008-09-09  0:33   ` [PATCH 2/2] git-rebase--interactive: auto amend only edited commit Junio C Hamano
2008-09-09  7:00     ` Dmitry Potapov
2008-09-09 12:05       ` [PATCH v2] " Dmitry Potapov
2008-09-09  6:42   ` [PATCH 2/2] " Johannes Sixt
2008-09-09  7:30     ` Dmitry Potapov
2008-09-09  0:06 ` [PATCH 1/2] git-rebase-interactive: do not squash commits on abort Junio C Hamano
2008-09-09 14:17   ` Johannes Schindelin
2008-09-09 20:50     ` [PATCH v2] " Dmitry Potapov
2008-09-10  9:53       ` Johannes Schindelin
2008-09-10 22:36         ` 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=1220906569-26878-2-git-send-email-dpotapov@gmail.com \
    --to=dpotapov@gmail.com \
    --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).