t / t6032-merge-large-rename.shon commit symbolic ref: refuse non-ref targets in HEAD (afe5d3d)
   1#!/bin/sh
   2
   3test_description='merging with large rename matrix'
   4. ./test-lib.sh
   5
   6count() {
   7        i=1
   8        while test $i -le $1; do
   9                echo $i
  10                i=$(($i + 1))
  11        done
  12}
  13
  14test_expect_success 'setup (initial)' '
  15        touch file &&
  16        git add . &&
  17        git commit -m initial &&
  18        git tag initial
  19'
  20
  21make_text() {
  22        echo $1: $2
  23        for i in `count 20`; do
  24                echo $1: $i
  25        done
  26        echo $1: $3
  27}
  28
  29test_rename() {
  30        test_expect_success "rename ($1, $2)" '
  31        n='$1'
  32        expect='$2'
  33        git checkout -f master &&
  34        git branch -D test$n || true &&
  35        git reset --hard initial &&
  36        for i in $(count $n); do
  37                make_text $i initial initial >$i
  38        done &&
  39        git add . &&
  40        git commit -m add=$n &&
  41        for i in $(count $n); do
  42                make_text $i changed initial >$i
  43        done &&
  44        git commit -a -m change=$n &&
  45        git checkout -b test$n HEAD^ &&
  46        for i in $(count $n); do
  47                git rm $i
  48                make_text $i initial changed >$i.moved
  49        done &&
  50        git add . &&
  51        git commit -m change+rename=$n &&
  52        case "$expect" in
  53                ok) git merge master ;;
  54                 *) test_must_fail git merge master ;;
  55        esac
  56        '
  57}
  58
  59test_rename 5 ok
  60
  61test_expect_success 'set diff.renamelimit to 4' '
  62        git config diff.renamelimit 4
  63'
  64test_rename 4 ok
  65test_rename 5 fail
  66
  67test_expect_success 'set merge.renamelimit to 5' '
  68        git config merge.renamelimit 5
  69'
  70test_rename 5 ok
  71test_rename 6 fail
  72
  73test_done