Merge branch 'jk/rebase-i-submodule-conflict-only'
Giving "--continue" to a conflicted "rebase -i" session skipped a commit that only results in changes to submodules. By John Keeping * jk/rebase-i-submodule-conflict-only: rebase -i continue: don't skip commits that only change submodulesmaint
commit
1f64344659
|
@ -672,7 +672,7 @@ rearrange_squash () {
|
||||||
case "$action" in
|
case "$action" in
|
||||||
continue)
|
continue)
|
||||||
# do we have anything to commit?
|
# do we have anything to commit?
|
||||||
if git diff-index --cached --quiet --ignore-submodules HEAD --
|
if git diff-index --cached --quiet HEAD --
|
||||||
then
|
then
|
||||||
: Nothing to commit -- skip this
|
: Nothing to commit -- skip this
|
||||||
else
|
else
|
||||||
|
|
|
@ -624,8 +624,38 @@ test_expect_success 'submodule rebase -i' '
|
||||||
FAKE_LINES="1 squash 2 3" git rebase -i A
|
FAKE_LINES="1 squash 2 3" git rebase -i A
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'submodule conflict setup' '
|
||||||
|
git tag submodule-base &&
|
||||||
|
git checkout HEAD^ &&
|
||||||
|
(
|
||||||
|
cd sub && git checkout HEAD^ && echo 4 >elif &&
|
||||||
|
git add elif && git commit -m "submodule conflict"
|
||||||
|
) &&
|
||||||
|
git add sub &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m "Conflict in submodule" &&
|
||||||
|
git tag submodule-topic
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase -i continue with only submodule staged' '
|
||||||
|
test_must_fail git rebase -i submodule-base &&
|
||||||
|
git add sub &&
|
||||||
|
git rebase --continue &&
|
||||||
|
test $(git rev-parse submodule-base) != $(git rev-parse HEAD)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase -i continue with unstaged submodule' '
|
||||||
|
git checkout submodule-topic &&
|
||||||
|
git reset --hard &&
|
||||||
|
test_must_fail git rebase -i submodule-base &&
|
||||||
|
git reset &&
|
||||||
|
git rebase --continue &&
|
||||||
|
test $(git rev-parse submodule-base) = $(git rev-parse HEAD)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'avoid unnecessary reset' '
|
test_expect_success 'avoid unnecessary reset' '
|
||||||
git checkout master &&
|
git checkout master &&
|
||||||
|
git reset --hard &&
|
||||||
test-chmtime =123456789 file3 &&
|
test-chmtime =123456789 file3 &&
|
||||||
git update-index --refresh &&
|
git update-index --refresh &&
|
||||||
HEAD=$(git rev-parse HEAD) &&
|
HEAD=$(git rev-parse HEAD) &&
|
||||||
|
|
Loading…
Reference in New Issue