fb1c18fc46
If we need to delete a higher stage entry in the index to place the file at stage 0, then we'll lose that file's stat information. In such situations we may still be able to detect that the file on disk is the version we want (as noted by our comment in the code: /* do not overwrite file if already present */ ), but we do still need to update the mtime since we are creating a new cache_entry for that file. Update the logic used to determine whether we refresh a file's mtime. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
49 lines
1.0 KiB
Bash
Executable File
49 lines
1.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git rebase across mode change'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' '
|
|
mkdir DS &&
|
|
>DS/whatever &&
|
|
git add DS &&
|
|
git commit -m base &&
|
|
|
|
git branch side1 &&
|
|
git branch side2 &&
|
|
|
|
git checkout side1 &&
|
|
git rm -rf DS &&
|
|
test_ln_s_add unrelated DS &&
|
|
git commit -m side1 &&
|
|
|
|
git checkout side2 &&
|
|
>unrelated &&
|
|
git add unrelated &&
|
|
git commit -m commit1 &&
|
|
|
|
echo >>unrelated &&
|
|
git commit -am commit2
|
|
'
|
|
|
|
test_expect_success 'rebase changes with the apply backend' '
|
|
test_when_finished "git rebase --abort || true" &&
|
|
git checkout -b apply-backend side2 &&
|
|
git rebase side1
|
|
'
|
|
|
|
test_expect_success 'rebase changes with the merge backend' '
|
|
test_when_finished "git rebase --abort || true" &&
|
|
git checkout -b merge-backend side2 &&
|
|
git rebase -m side1
|
|
'
|
|
|
|
test_expect_success 'rebase changes with the merge backend with a delay' '
|
|
test_when_finished "git rebase --abort || true" &&
|
|
git checkout -b merge-delay-backend side2 &&
|
|
git rebase -m --exec "sleep 1" side1
|
|
'
|
|
|
|
test_done
|