summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Alex Riesen <raa.lkml@gmail.com>2007-07-13 00:30:35 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2007-07-13 22:33:16 -0700
commit793ad04198a79c14094bd1311a9c42f1293c6183 (patch)
tree5cf6372215ad377a8cd5fbf45d970cb9ce27946a
parentlockfile.c: schedule remove_lock_file only once. (diff)
downloadtgif-793ad04198a79c14094bd1311a9c42f1293c6183.tar.xz
Fix git-rebase -i to allow squashing of fast-forwardable commits
Without this change the commits will be left standalone, with duplicated commit message. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-rebase--interactive.sh5
1 files changed, 3 insertions, 2 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index d9563ec46f..f3950767ea 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -84,6 +84,7 @@ pick_one () {
current_sha1=$(git rev-parse --verify HEAD)
if [ $current_sha1 = $parent_sha1 ]; then
git reset --hard $sha1
+ test "a$1" = a-n && git reset --soft $current_sha1
sha1=$(git rev-parse --short $sha1)
warn Fast forward to $sha1
else
@@ -193,14 +194,14 @@ do_next () {
die "Cannot 'squash' without a previous commit"
mark_action_done
- failed=f
- pick_one -n $sha1 || failed=t
MSG="$DOTEST"/message
echo "# This is a combination of two commits." > "$MSG"
echo "# The first commit's message is:" >> "$MSG"
echo >> "$MSG"
git cat-file commit HEAD | sed -e '1,/^$/d' >> "$MSG"
echo >> "$MSG"
+ failed=f
+ pick_one -n $sha1 || failed=t
echo "# And this is the 2nd commit message:" >> "$MSG"
echo >> "$MSG"
git cat-file commit $sha1 | sed -e '1,/^$/d' >> "$MSG"