summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhillip Wood <phillip.wood@dunelm.org.uk>2018-03-14 11:11:27 +0000
committerJunio C Hamano <gitster@pobox.com>2018-03-15 12:47:20 -0700
commitc158dcfc1476bcf6842ba68fc538705323b0e740 (patch)
tree6c674144f00e5ab5ab1c357c503a07f62a243e23
parent7bad57bb3f0554c0d144288715e6a8fcdda76a64 (diff)
downloadgit-pw/rebase-signoff-with-implicit-i.tar.gz
rebase --root -k: fix when root commit is emptypw/rebase-signoff-with-implicit-i
When the root commit was empty it was being pruned by the --cherry-pick option passed to rev-parse. This is because when --onto is omitted rebase creates an empty commit (which it later amends) for the new root commit. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--git-rebase--interactive.sh7
-rwxr-xr-xgit-rebase.sh1
-rwxr-xr-xt/t3428-rebase-signoff.sh2
3 files changed, 8 insertions, 2 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 104de328ee..7f90a14309 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -900,7 +900,12 @@ then
revisions=$upstream...$orig_head
shortrevisions=$shortupstream..$shorthead
else
- revisions=$onto...$orig_head
+ if test -n "$squash_onto"
+ then
+ revisions=$orig_head
+ else
+ revisions=$onto...$orig_head
+ fi
shortrevisions=$shorthead
fi
if test t != "$preserve_merges"
diff --git a/git-rebase.sh b/git-rebase.sh
index e708a4fc2c..1399f35329 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -62,6 +62,7 @@ $(gettext 'Resolve all conflicts manually, mark them as resolved with
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".')
"
+squash_onto=
unset onto
unset restrict_revision
cmd=
diff --git a/t/t3428-rebase-signoff.sh b/t/t3428-rebase-signoff.sh
index 2ff7f534e3..90ca6636d5 100755
--- a/t/t3428-rebase-signoff.sh
+++ b/t/t3428-rebase-signoff.sh
@@ -59,7 +59,7 @@ test_expect_success 'rebase --exec --signoff adds a sign-off line' '
test_cmp expected-signed actual
'
-test_expect_failure 'rebase --root --signoff adds a sign-off line' '
+test_expect_success 'rebase --root --signoff adds a sign-off line' '
git commit --amend -m "first" &&
git rebase --root --keep-empty --signoff &&
git cat-file commit HEAD^ | sed -e "1,/^\$/d" >actual &&