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'
  21test_expect_success 'merge -s recursive up-to-date' '
  23        git reset --hard c1 &&
  25        test_tick &&
  26        git merge -s recursive c0 &&
  27        expect=$(git rev-parse c1) &&
  28        current=$(git rev-parse HEAD) &&
  29        test "$expect" = "$current"
  30'
  32test_expect_success 'merge -s recursive fast-forward' '
  34        git reset --hard c0 &&
  36        test_tick &&
  37        git merge -s recursive c1 &&
  38        expect=$(git rev-parse c1) &&
  39        current=$(git rev-parse HEAD) &&
  40        test "$expect" = "$current"
  41'
  43test_expect_success 'merge -s ours up-to-date' '
  45        git reset --hard c1 &&
  47        test_tick &&
  48        git merge -s ours c0 &&
  49        expect=$(git rev-parse c1) &&
  50        current=$(git rev-parse HEAD) &&
  51        test "$expect" = "$current"
  52'
  54test_expect_success 'merge -s ours fast-forward' '
  56        git reset --hard c0 &&
  58        test_tick &&
  59        git merge -s ours c1 &&
  60        expect=$(git rev-parse c0^{tree}) &&
  61        current=$(git rev-parse HEAD^{tree}) &&
  62        test "$expect" = "$current"
  63'
  65test_expect_success 'merge -s subtree up-to-date' '
  67        git reset --hard c1 &&
  69        test_tick &&
  70        git merge -s subtree c0 &&
  71        expect=$(git rev-parse c1) &&
  72        current=$(git rev-parse HEAD) &&
  73        test "$expect" = "$current"
  74'
  76test_done