1#!/bin/sh
   2test_description='merge fast-forward and up to date'
   4. ./test-lib.sh
   6test_expect_success setup '
   8        >file &&
   9        git add file &&
  10        test_tick &&
  11        git commit -m initial &&
  12        git tag c0 &&
  13        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'
  26test_expect_success 'merge -s recursive up-to-date' '
  28        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'
  37test_expect_success 'merge -s recursive fast-forward' '
  39        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'
  48test_expect_success 'merge -s ours up-to-date' '
  50        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'
  59test_expect_success 'merge -s ours fast-forward' '
  61        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'
  70test_expect_success 'merge -s subtree up-to-date' '
  72        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'
  81test_expect_success 'merge fast-forward octopus' '
  83        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'
  91test_done