mirror of
https://github.com/git/git
synced 2024-08-26 19:19:18 +00:00
![Jens Lehmann](/assets/img/avatar_default.png)
Test that the rebase command updates the work tree as expected for changes which don't result in conflicts. To make that work add two helper functions that add a commit only touching files and then revert it. This allows to rebase the target commit over these two and to compare the result. Set KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR to document that "replace directory with submodule" fails for an interactive rebase because a directory "sub1" already exists. Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
47 lines
1.1 KiB
Bash
Executable file
47 lines
1.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='rebase can handle submodules'
|
|
|
|
. ./test-lib.sh
|
|
. "$TEST_DIRECTORY"/lib-submodule-update.sh
|
|
. "$TEST_DIRECTORY"/lib-rebase.sh
|
|
|
|
git_rebase () {
|
|
git status -su >expect &&
|
|
ls -1pR * >>expect &&
|
|
git checkout -b ours HEAD &&
|
|
echo x >>file1 &&
|
|
git add file1 &&
|
|
git commit -m add_x &&
|
|
git revert HEAD &&
|
|
git status -su >actual &&
|
|
ls -1pR * >>actual &&
|
|
test_cmp expect actual &&
|
|
git rebase "$1"
|
|
}
|
|
|
|
test_submodule_switch "git_rebase"
|
|
|
|
git_rebase_interactive () {
|
|
git status -su >expect &&
|
|
ls -1pR * >>expect &&
|
|
git checkout -b ours HEAD &&
|
|
echo x >>file1 &&
|
|
git add file1 &&
|
|
git commit -m add_x &&
|
|
git revert HEAD &&
|
|
git status -su >actual &&
|
|
ls -1pR * >>actual &&
|
|
test_cmp expect actual &&
|
|
set_fake_editor &&
|
|
echo "fake-editor.sh" >.git/info/exclude &&
|
|
git rebase -i "$1"
|
|
}
|
|
|
|
KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
|
|
# The real reason "replace directory with submodule" fails is because a
|
|
# directory "sub1" exists, but we reuse the suppression added for merge here
|
|
test_submodule_switch "git_rebase_interactive"
|
|
|
|
test_done
|