Merge branch 'aj/fix-read-tree-from-scratch' into next
[git] / t / t6032-merge-large-rename.sh
1 #!/bin/sh
2
3 test_description='merging with large rename matrix'
4 . ./test-lib.sh
5
6 count() {
7         i=1
8         while test $i -le $1; do
9                 echo $i
10                 i=$(($i + 1))
11         done
12 }
13
14 test_expect_success 'setup (initial)' '
15         touch file &&
16         git add . &&
17         git commit -m initial &&
18         git tag initial
19 '
20
21 make_text() {
22         echo $1: $2
23         for i in `count 20`; do
24                 echo $1: $i
25         done
26         echo $1: $3
27 }
28
29 test_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
59 test_rename 5 ok
60
61 test_expect_success 'set diff.renamelimit to 4' '
62         git config diff.renamelimit 4
63 '
64 test_rename 4 ok
65 test_rename 5 fail
66
67 test_expect_success 'set merge.renamelimit to 5' '
68         git config merge.renamelimit 5
69 '
70 test_rename 5 ok
71 test_rename 6 fail
72
73 test_done