summaryrefslogtreecommitdiff
path: root/t/t3404-rebase-interactive.sh
diff options
context:
space:
mode:
authorMatthieu Moy <Matthieu.Moy@imag.fr>2011-08-24 14:01:48 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-08-26 21:57:09 (GMT)
commitffaaed88aed2e9b7936a0c5b43c1b198db0dc2ab (patch)
tree264997f5bdf5cf9504d66e82712f4cf3a75a6c0e /t/t3404-rebase-interactive.sh
parentcd2b8ae983a277fb3f3c2b2c6747b0a075af1421 (diff)
downloadgit-ffaaed88aed2e9b7936a0c5b43c1b198db0dc2ab.zip
git-ffaaed88aed2e9b7936a0c5b43c1b198db0dc2ab.tar.gz
git-ffaaed88aed2e9b7936a0c5b43c1b198db0dc2ab.tar.bz2
rebase -i: clean error message for --continue after failed exec
After an "exec false" stops the rebase and gives the control back to the user, if changes are added to the index, "rebase --continue" fails with this message, which may technically be correct, but does not point at the real problem: .../git-rebase--interactive: line 774: .../.git/rebase-merge/author-script: No such file or directory We could try auto-amending HEAD, but this goes against the logic of .git/rebase-merge/author-script (see also the testcase 'auto-amend only edited commits after "edit"' in t3404-rebase-interactive.sh) to auto-amend something the user hasn't explicitely asked to edit. Instead of doing anything automatically, detect the situation and give a clean error message. While we're there, also clarify the error message in case '. "$author_script"' fails, which now corresponds to really weird senario where the author script exists but can't be read. Test-case-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3404-rebase-interactive.sh')
-rwxr-xr-xt/t3404-rebase-interactive.sh14
1 files changed, 14 insertions, 0 deletions
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 8538813..b981572 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -527,6 +527,20 @@ test_expect_success 'auto-amend only edited commits after "edit"' '
git rebase --abort
'
+test_expect_success 'clean error after failed "exec"' '
+ test_tick &&
+ test_when_finished "git rebase --abort || :" &&
+ (
+ FAKE_LINES="1 exec_false" &&
+ export FAKE_LINES &&
+ test_must_fail git rebase -i HEAD^
+ ) &&
+ echo "edited again" > file7 &&
+ git add file7 &&
+ test_must_fail git rebase --continue 2>error &&
+ grep "You have staged changes in your working tree." error
+'
+
test_expect_success 'rebase a detached HEAD' '
grandparent=$(git rev-parse HEAD~2) &&
git checkout $(git rev-parse HEAD) &&