]>
Commit | Line | Data |
---|---|---|
00f66f0e | 1 | #!/bin/sh |
beb17217 CB |
2 | |
3 | test_description='git rebase - test patch id computation' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
b687cd6a | 7 | count () { |
beb17217 CB |
8 | i=0 |
9 | while test $i -lt $1 | |
10 | do | |
11 | echo "$i" | |
12 | i=$(($i+1)) | |
13 | done | |
14 | } | |
15 | ||
b687cd6a | 16 | scramble () { |
beb17217 CB |
17 | i=0 |
18 | while read x | |
19 | do | |
20 | if test $i -ne 0 | |
21 | then | |
22 | echo "$x" | |
23 | fi | |
00f66f0e | 24 | i=$((($i+1) % 10)) |
b687cd6a | 25 | done <"$1" >"$1.new" |
beb17217 CB |
26 | mv -f "$1.new" "$1" |
27 | } | |
28 | ||
b687cd6a | 29 | run () { |
beb17217 CB |
30 | echo \$ "$@" |
31 | /usr/bin/time "$@" >/dev/null | |
32 | } | |
33 | ||
34 | test_expect_success 'setup' ' | |
02380389 | 35 | git commit --allow-empty -m initial && |
beb17217 CB |
36 | git tag root |
37 | ' | |
38 | ||
b687cd6a JH |
39 | do_tests () { |
40 | nlines=$1 pr=${2-} | |
beb17217 CB |
41 | |
42 | test_expect_success $pr "setup: $nlines lines" " | |
43 | rm -f .gitattributes && | |
44 | git checkout -q -f master && | |
45 | git reset --hard root && | |
46 | count $nlines >file && | |
47 | git add file && | |
48 | git commit -q -m initial && | |
49 | git branch -f other && | |
50 | ||
51 | scramble file && | |
52 | git add file && | |
53 | git commit -q -m 'change big file' && | |
54 | ||
55 | git checkout -q other && | |
56 | : >newfile && | |
57 | git add newfile && | |
58 | git commit -q -m 'add small file' && | |
59 | ||
60 | git cherry-pick master >/dev/null 2>&1 | |
61 | " | |
62 | ||
63 | test_debug " | |
64 | run git diff master^\! | |
65 | " | |
66 | ||
67 | test_expect_success $pr 'setup attributes' " | |
68 | echo 'file binary' >.gitattributes | |
69 | " | |
70 | ||
71 | test_debug " | |
72 | run git format-patch --stdout master && | |
73 | run git format-patch --stdout --ignore-if-in-upstream master | |
74 | " | |
75 | ||
577dfd03 | 76 | test_expect_success $pr 'detect upstream patch' ' |
beb17217 CB |
77 | git checkout -q master && |
78 | scramble file && | |
79 | git add file && | |
577dfd03 | 80 | git commit -q -m "change big file again" && |
beb17217 CB |
81 | git checkout -q other^{} && |
82 | git rebase master && | |
577dfd03 JK |
83 | test_must_fail test -n "$(git rev-list master...HEAD~)" |
84 | ' | |
beb17217 | 85 | |
577dfd03 | 86 | test_expect_success $pr 'do not drop patch' ' |
beb17217 CB |
87 | git branch -f squashed master && |
88 | git checkout -q -f squashed && | |
89 | git reset -q --soft HEAD~2 && | |
90 | git commit -q -m squashed && | |
91 | git checkout -q other^{} && | |
92 | test_must_fail git rebase squashed && | |
93 | rm -rf .git/rebase-apply | |
577dfd03 | 94 | ' |
beb17217 CB |
95 | } |
96 | ||
b687cd6a JH |
97 | do_tests 500 |
98 | do_tests 50000 EXPENSIVE | |
beb17217 CB |
99 | |
100 | test_done |