1#!/bin/sh 2 3test_description='merge fast-forward and up to date' 4 5. ./test-lib.sh 6 7test_expect_success setup ' 8 >file && 9 git add file && 10 test_tick && 11 git commit -m initial && 12 git tag c0 && 13 14 echo second >file && 15 git add file && 16 test_tick && 17 git commit -m second && 18 git tag c1 && 19 git branch test && 20 echo third >file && 21 git add file && 22 test_tick && 23 git commit -m third && 24 git tag c2 25' 26 27test_expect_success 'merge -s recursive up-to-date' ' 28 29 git reset --hard c1 && 30 test_tick && 31 git merge -s recursive c0 && 32 expect=$(git rev-parse c1) && 33 current=$(git rev-parse HEAD) && 34 test "$expect" = "$current" 35 36' 37 38test_expect_success 'merge -s recursive fast-forward' ' 39 40 git reset --hard c0 && 41 test_tick && 42 git merge -s recursive c1 && 43 expect=$(git rev-parse c1) && 44 current=$(git rev-parse HEAD) && 45 test "$expect" = "$current" 46 47' 48 49test_expect_success 'merge -s ours up-to-date' ' 50 51 git reset --hard c1 && 52 test_tick && 53 git merge -s ours c0 && 54 expect=$(git rev-parse c1) && 55 current=$(git rev-parse HEAD) && 56 test "$expect" = "$current" 57 58' 59 60test_expect_success 'merge -s ours fast-forward' ' 61 62 git reset --hard c0 && 63 test_tick && 64 git merge -s ours c1 && 65 expect=$(git rev-parse c0^{tree}) && 66 current=$(git rev-parse HEAD^{tree}) && 67 test "$expect" = "$current" 68 69' 70 71test_expect_success 'merge -s subtree up-to-date' ' 72 73 git reset --hard c1 && 74 test_tick && 75 git merge -s subtree c0 && 76 expect=$(git rev-parse c1) && 77 current=$(git rev-parse HEAD) && 78 test "$expect" = "$current" 79 80' 81 82test_expect_success 'merge fast-forward octopus' ' 83 84 git reset --hard c0 && 85 test_tick && 86 git merge c1 c2 && 87 expect=$(git rev-parse c2) && 88 current=$(git rev-parse HEAD) && 89 test "$expect" = "$current" 90' 91 92test_done 93