Merge branch 'ab/ci-updates'
[git/debian.git] / t / t3419-rebase-patch-id.sh
blob295040f2fe377971f0cec1eace32570840165d90
1 #!/bin/sh
3 test_description='git rebase - test patch id computation'
5 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
6 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
8 . ./test-lib.sh
10 scramble () {
11 i=0
12 while read x
14 if test $i -ne 0
15 then
16 echo "$x"
18 i=$((($i+1) % 10))
19 done <"$1" >"$1.new"
20 mv -f "$1.new" "$1"
23 test_expect_success 'setup' '
24 git commit --allow-empty -m initial &&
25 git tag root
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 &&
37 scramble file &&
38 git add file &&
39 git commit -q -m "change big file" &&
41 git checkout -q other &&
42 : >newfile &&
43 git add newfile &&
44 git commit -q -m "add small file" &&
46 git cherry-pick main >/dev/null 2>&1
49 test_expect_success 'setup attributes' '
50 echo "file binary" >.gitattributes
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
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
74 test_done