Code

rebase -i squashes submodule changes into unrelated commit
authorJunio C Hamano <gitster@pobox.com>
Tue, 27 Jan 2009 09:07:31 +0000 (01:07 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 28 Jan 2009 22:54:58 +0000 (14:54 -0800)
Attempting to rebase three-commit series (two regular changes, followed by
one commit that changes what commit is bound for a submodule path) to
squash the first two results in a failure; not just the first two commits
squashed, but the change to the submodule is also included in the result.

This failure causes the subsequent step to "pick" the change that actually
changes the submodule to be applied, because there is no change left to be
applied.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t3404-rebase-interactive.sh

index 2cc8e7abe1b9244b2d6520cdbb0e0769e2a6d986..6ffb9ad794196da6f57853834bc6007edead8006 100755 (executable)
@@ -462,4 +462,30 @@ test_expect_success 'do "noop" when there is nothing to cherry-pick' '
 
 '
 
+test_expect_success 'submodule rebase setup' '
+       git checkout A &&
+       mkdir sub &&
+       (
+               cd sub && git init && >elif &&
+               git add elif && git commit -m "submodule initial"
+       ) &&
+       echo 1 >file1 &&
+       git add file1 sub
+       test_tick &&
+       git commit -m "One" &&
+       echo 2 >file1 &&
+       test_tick &&
+       git commit -a -m "Two" &&
+       (
+               cd sub && echo 3 >elif &&
+               git commit -a -m "submodule second"
+       ) &&
+       test_tick &&
+       git commit -a -m "Three changes submodule"
+'
+
+test_expect_failure 'submodule rebase -i' '
+       FAKE_LINES="1 squash 2 3" git rebase -i A
+'
+
 test_done