Browse Source
When performing a non-interactive rebase, sometimes "git rebase --continue" will fail if an unmodified file is touched in the working directory: You must edit all merge conflicts and then mark them as resolved using git add This is caused by "git diff-files" reporting a difference between the index and the filesystem: :100644 100644 d00491...... 000000...... M file The fix is to run "git update-index --refresh" before "git diff-files" as is done in git-rebase--interactive. Signed-off-by: David D. Kilzer <ddkilzer@kilzer.net> Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint


2 changed files with 44 additions and 0 deletions
@ -0,0 +1,43 @@
@@ -0,0 +1,43 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='git rebase --continue tests' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
. "$TEST_DIRECTORY"/lib-rebase.sh |
||||
|
||||
set_fake_editor |
||||
|
||||
test_expect_success 'setup' ' |
||||
test_commit "commit-new-file-F1" F1 1 && |
||||
test_commit "commit-new-file-F2" F2 2 && |
||||
|
||||
git checkout -b topic HEAD^ && |
||||
test_commit "commit-new-file-F2-on-topic-branch" F2 22 && |
||||
|
||||
git checkout master |
||||
' |
||||
|
||||
test_expect_success 'interactive rebase --continue works with touched file' ' |
||||
rm -fr .git/rebase-* && |
||||
git reset --hard && |
||||
git checkout master && |
||||
|
||||
FAKE_LINES="edit 1" git rebase -i HEAD^ && |
||||
test-chmtime =-60 F1 && |
||||
git rebase --continue |
||||
' |
||||
|
||||
test_expect_success 'non-interactive rebase --continue works with touched file' ' |
||||
rm -fr .git/rebase-* && |
||||
git reset --hard && |
||||
git checkout master && |
||||
|
||||
test_must_fail git rebase --onto master master topic && |
||||
echo "Resolved" >F2 && |
||||
git add F2 && |
||||
test-chmtime =-60 F1 && |
||||
git rebase --continue |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue