The assumtion that the new HEAD is the rewritten old head is wrong. The
new HEAD is the (maybe rewritten) last commit in the list.
Signed-off-by: Jörg Sommer <joerg@alea.gnuu.de>
---
git-rebase--interactive.sh | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 8aa7371..dec18a3 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -20,6 +20,7 @@ require_work_tree
DOTEST="$GIT_DIR/.dotest-merge"
TODO="$DOTEST"/git-rebase-todo
DONE="$DOTEST"/done
+LAST_SHA1="$DOTEST"/last_sha1
MSG="$DOTEST"/message
SQUASH_MSG="$DOTEST"/message-squash
REWRITTEN="$DOTEST"/rewritten
@@ -251,6 +252,7 @@ do_next () {
pick|p)
comment_for_reflog pick
+ echo $sha1 > "$LAST_SHA1"
mark_action_done
pick_one $sha1 ||
die_with_patch $sha1 "Could not apply $sha1... $rest"
@@ -258,6 +260,7 @@ do_next () {
edit|e)
comment_for_reflog edit
+ echo $sha1 > "$LAST_SHA1"
mark_action_done
pick_one $sha1 ||
die_with_patch $sha1 "Could not apply $sha1... $rest"
@@ -280,6 +283,7 @@ do_next () {
has_action "$DONE" ||
die "Cannot 'squash' without a previous commit"
+ echo $sha1 > "$LAST_SHA1"
mark_action_done
make_squash_message $sha1 > "$MSG"
case "$(peek_next_command)" in
@@ -333,11 +337,12 @@ do_next () {
test -f "$DOTEST"/current-commit &&
current_commit=$(cat "$DOTEST"/current-commit) &&
git rev-parse HEAD > "$REWRITTEN"/$current_commit
- if test -f "$REWRITTEN"/$OLDHEAD
+ last_sha1=$(git rev-parse $(cat "$LAST_SHA1"))
+ if test -f "$REWRITTEN"/$last_sha1
then
- NEWHEAD=$(cat "$REWRITTEN"/$OLDHEAD)
+ NEWHEAD=$(cat "$REWRITTEN"/$last_sha1)
else
- NEWHEAD=$OLDHEAD
+ NEWHEAD=$last_sha1
fi
else
NEWHEAD=$(git rev-parse HEAD)
--
1.5.4.4
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html