e78cbf8cbb
Instead of waiting until we record the parents of resulting merge, reduce redundant parents (including our HEAD) immediately after reading them. The change to t7602 illustrates the essence of the effect of this change. The octopus merge strategy used to be fed with redundant commits only to discard them as "up-to-date", but we no longer feed such redundant commits to it and the affected test degenerates to a regular two-head merge. And obviously the known-to-be-broken test in t6028 is now fixed. Signed-off-by: Junio C Hamano <gitster@pobox.com>
93 lines
1.7 KiB
Bash
Executable File
93 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='merge fast-forward and up to date'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success setup '
|
|
>file &&
|
|
git add file &&
|
|
test_tick &&
|
|
git commit -m initial &&
|
|
git tag c0 &&
|
|
|
|
echo second >file &&
|
|
git add file &&
|
|
test_tick &&
|
|
git commit -m second &&
|
|
git tag c1 &&
|
|
git branch test &&
|
|
echo third >file &&
|
|
git add file &&
|
|
test_tick &&
|
|
git commit -m third &&
|
|
git tag c2
|
|
'
|
|
|
|
test_expect_success 'merge -s recursive up-to-date' '
|
|
|
|
git reset --hard c1 &&
|
|
test_tick &&
|
|
git merge -s recursive c0 &&
|
|
expect=$(git rev-parse c1) &&
|
|
current=$(git rev-parse HEAD) &&
|
|
test "$expect" = "$current"
|
|
|
|
'
|
|
|
|
test_expect_success 'merge -s recursive fast-forward' '
|
|
|
|
git reset --hard c0 &&
|
|
test_tick &&
|
|
git merge -s recursive c1 &&
|
|
expect=$(git rev-parse c1) &&
|
|
current=$(git rev-parse HEAD) &&
|
|
test "$expect" = "$current"
|
|
|
|
'
|
|
|
|
test_expect_success 'merge -s ours up-to-date' '
|
|
|
|
git reset --hard c1 &&
|
|
test_tick &&
|
|
git merge -s ours c0 &&
|
|
expect=$(git rev-parse c1) &&
|
|
current=$(git rev-parse HEAD) &&
|
|
test "$expect" = "$current"
|
|
|
|
'
|
|
|
|
test_expect_success 'merge -s ours fast-forward' '
|
|
|
|
git reset --hard c0 &&
|
|
test_tick &&
|
|
git merge -s ours c1 &&
|
|
expect=$(git rev-parse c0^{tree}) &&
|
|
current=$(git rev-parse HEAD^{tree}) &&
|
|
test "$expect" = "$current"
|
|
|
|
'
|
|
|
|
test_expect_success 'merge -s subtree up-to-date' '
|
|
|
|
git reset --hard c1 &&
|
|
test_tick &&
|
|
git merge -s subtree c0 &&
|
|
expect=$(git rev-parse c1) &&
|
|
current=$(git rev-parse HEAD) &&
|
|
test "$expect" = "$current"
|
|
|
|
'
|
|
|
|
test_expect_success 'merge fast-forward octopus' '
|
|
|
|
git reset --hard c0 &&
|
|
test_tick &&
|
|
git merge c1 c2
|
|
expect=$(git rev-parse c2) &&
|
|
current=$(git rev-parse HEAD) &&
|
|
test "$expect" = "$current"
|
|
'
|
|
|
|
test_done
|