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 submodules
This commit is contained in:
Junio C Hamano 2012-04-23 12:39:04 -07:00
commit 1f64344659
2 changed files with 31 additions and 1 deletions

View File

@ -672,7 +672,7 @@ rearrange_squash () {
case "$action" in
continue)
# do we have anything to commit?
if git diff-index --cached --quiet --ignore-submodules HEAD --
if git diff-index --cached --quiet HEAD --
then
: Nothing to commit -- skip this
else

View File

@ -624,8 +624,38 @@ test_expect_success 'submodule rebase -i' '
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' '
git checkout master &&
git reset --hard &&
test-chmtime =123456789 file3 &&
git update-index --refresh &&
HEAD=$(git rev-parse HEAD) &&