]> git.ipfire.org Git - thirdparty/git.git/blob - t/t3419-rebase-patch-id.sh
Sync with 2.36.3
[thirdparty/git.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