| #!/bin/sh | 
 |  | 
 | test_description='merge fast-forward and up to date' | 
 |  | 
 | TEST_PASSES_SANITIZE_LEAK=true | 
 | . ./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 |