]>
Commit | Line | Data |
---|---|---|
2a2ac926 JK |
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 | |
59f9c6c3 | 23 | for i in $(count 20); do |
2a2ac926 JK |
24 | echo $1: $i |
25 | done | |
26 | echo $1: $3 | |
27 | } | |
28 | ||
29 | test_rename() { | |
30 | test_expect_success "rename ($1, $2)" ' | |
a6a4a88a JK |
31 | n='$1' && |
32 | expect='$2' && | |
2a2ac926 | 33 | git checkout -f master && |
a6a4a88a | 34 | test_might_fail git branch -D test$n && |
2a2ac926 JK |
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 | ||
df0b99f0 EN |
73 | test_expect_success 'setup large simple rename' ' |
74 | git config --unset merge.renamelimit && | |
75 | git config --unset diff.renamelimit && | |
76 | ||
77 | git reset --hard initial && | |
78 | for i in $(count 200); do | |
79 | make_text foo bar baz >$i | |
80 | done && | |
81 | git add . && | |
82 | git commit -m create-files && | |
83 | ||
84 | git branch simple-change && | |
85 | git checkout -b simple-rename && | |
86 | ||
87 | mkdir builtin && | |
88 | git mv [0-9]* builtin/ && | |
89 | git commit -m renamed && | |
90 | ||
91 | git checkout simple-change && | |
92 | >unrelated-change && | |
93 | git add unrelated-change && | |
94 | git commit -m unrelated-change | |
95 | ' | |
96 | ||
97 | test_expect_success 'massive simple rename does not spam added files' ' | |
1f5ad6b1 | 98 | sane_unset GIT_MERGE_VERBOSITY && |
df0b99f0 | 99 | git merge --no-stat simple-rename | grep -v Removing >output && |
3fb0459b | 100 | test_line_count -lt 5 output |
df0b99f0 EN |
101 | ' |
102 | ||
2a2ac926 | 103 | test_done |