Merge branch 'russian-l10n' of github.com:DJm00n/git-po-ru
[git] / t / t3419-rebase-patch-id.sh
1 #!/bin/sh
2
3 test_description='git rebase - test patch id computation'
4
5 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
6 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
7
8 . ./test-lib.sh
9
10 scramble () {
11         i=0
12         while read x
13         do
14                 if test $i -ne 0
15                 then
16                         echo "$x"
17                 fi
18                 i=$((($i+1) % 10))
19         done <"$1" >"$1.new"
20         mv -f "$1.new" "$1"
21 }
22
23 test_expect_success 'setup' '
24         git commit --allow-empty -m initial &&
25         git tag root
26 '
27
28 test_expect_success 'setup: 500 lines' '
29         rm -f .gitattributes &&
30         git checkout -q -f main &&
31         git reset --hard root &&
32         test_seq 500 >file &&
33         git add file &&
34         git commit -q -m initial &&
35         git branch -f other &&
36
37         scramble file &&
38         git add file &&
39         git commit -q -m "change big file" &&
40
41         git checkout -q other &&
42         : >newfile &&
43         git add newfile &&
44         git commit -q -m "add small file" &&
45
46         git cherry-pick main >/dev/null 2>&1
47 '
48
49 test_expect_success 'setup attributes' '
50         echo "file binary" >.gitattributes
51 '
52
53 test_expect_success 'detect upstream patch' '
54         git checkout -q main &&
55         scramble file &&
56         git add file &&
57         git commit -q -m "change big file again" &&
58         git checkout -q other^{} &&
59         git rebase main &&
60         git rev-list main...HEAD~ >revs &&
61         test_must_be_empty revs
62 '
63
64 test_expect_success 'do not drop patch' '
65         git branch -f squashed main &&
66         git checkout -q -f squashed &&
67         git reset -q --soft HEAD~2 &&
68         git commit -q -m squashed &&
69         git checkout -q other^{} &&
70         test_must_fail git rebase squashed &&
71         git rebase --quit
72 '
73
74 test_done