t / t7602-merge-octopus-many.shon commit built-in rebase --autostash: leave the current branch alone if possible (176f5d9)
   1#!/bin/sh
   2
   3test_description='git merge
   4
   5Testing octopus merge with more than 25 refs.'
   6
   7. ./test-lib.sh
   8
   9test_expect_success 'setup' '
  10        echo c0 > c0.c &&
  11        git add c0.c &&
  12        git commit -m c0 &&
  13        git tag c0 &&
  14        i=1 &&
  15        while test $i -le 30
  16        do
  17                git reset --hard c0 &&
  18                echo c$i > c$i.c &&
  19                git add c$i.c &&
  20                git commit -m c$i &&
  21                git tag c$i &&
  22                i=$(expr $i + 1) || return 1
  23        done
  24'
  25
  26test_expect_success 'merge c1 with c2, c3, c4, ... c29' '
  27        git reset --hard c1 &&
  28        i=2 &&
  29        refs="" &&
  30        while test $i -le 30
  31        do
  32                refs="$refs c$i"
  33                i=$(expr $i + 1)
  34        done &&
  35        git merge $refs &&
  36        test "$(git rev-parse c1)" != "$(git rev-parse HEAD)" &&
  37        i=1 &&
  38        while test $i -le 30
  39        do
  40                test "$(git rev-parse c$i)" = "$(git rev-parse HEAD^$i)" &&
  41                i=$(expr $i + 1) || return 1
  42        done &&
  43        git diff --exit-code &&
  44        i=1 &&
  45        while test $i -le 30
  46        do
  47                test -f c$i.c &&
  48                i=$(expr $i + 1) || return 1
  49        done
  50'
  51
  52cat >expected <<\EOF
  53Trying simple merge with c2
  54Trying simple merge with c3
  55Trying simple merge with c4
  56Merge made by the 'octopus' strategy.
  57 c2.c | 1 +
  58 c3.c | 1 +
  59 c4.c | 1 +
  60 3 files changed, 3 insertions(+)
  61 create mode 100644 c2.c
  62 create mode 100644 c3.c
  63 create mode 100644 c4.c
  64EOF
  65
  66test_expect_success 'merge output uses pretty names' '
  67        git reset --hard c1 &&
  68        git merge c2 c3 c4 >actual &&
  69        test_i18ncmp expected actual
  70'
  71
  72cat >expected <<\EOF
  73Merge made by the 'recursive' strategy.
  74 c5.c | 1 +
  75 1 file changed, 1 insertion(+)
  76 create mode 100644 c5.c
  77EOF
  78
  79test_expect_success 'merge reduces irrelevant remote heads' '
  80        GIT_MERGE_VERBOSITY=0 git merge c4 c5 >actual &&
  81        test_i18ncmp expected actual
  82'
  83
  84cat >expected <<\EOF
  85Fast-forwarding to: c1
  86Trying simple merge with c2
  87Merge made by the 'octopus' strategy.
  88 c1.c | 1 +
  89 c2.c | 1 +
  90 2 files changed, 2 insertions(+)
  91 create mode 100644 c1.c
  92 create mode 100644 c2.c
  93EOF
  94
  95test_expect_success 'merge fast-forward output uses pretty names' '
  96        git reset --hard c0 &&
  97        git merge c1 c2 >actual &&
  98        test_i18ncmp expected actual
  99'
 100
 101test_done