]> git.ipfire.org Git - thirdparty/git.git/blame - t/t3303-notes-subtrees.sh
Merge branch 'gc/branch-recurse-submodules-fix'
[thirdparty/git.git] / t / t3303-notes-subtrees.sh
CommitLineData
0057c091
JH
1#!/bin/sh
2
3test_description='Test commit notes organized in subtrees'
4
d6c6b108 5GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
334afbc7
JS
6export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
7
0057c091
JH
8. ./test-lib.sh
9
10number_of_commits=100
11
12start_note_commit () {
13 test_tick &&
14 cat <<INPUT_END
15commit refs/notes/commits
16committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
17data <<COMMIT
18notes
19COMMIT
20
21from refs/notes/commits^0
22deleteall
23INPUT_END
24
25}
26
27verify_notes () {
28 git log | grep "^ " > output &&
29 i=$number_of_commits &&
30 while [ $i -gt 0 ]; do
31 echo " commit #$i" &&
32 echo " note for commit #$i" &&
db5875aa 33 i=$(($i-1)) || return 1
0057c091
JH
34 done > expect &&
35 test_cmp expect output
36}
37
38test_expect_success "setup: create $number_of_commits commits" '
39
40 (
41 nr=0 &&
42 while [ $nr -lt $number_of_commits ]; do
43 nr=$(($nr+1)) &&
44 test_tick &&
db5875aa 45 cat <<INPUT_END || return 1
d6c6b108 46commit refs/heads/main
0057c091
JH
47committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
48data <<COMMIT
49commit #$nr
50COMMIT
51
52M 644 inline file
53data <<EOF
54file in commit #$nr
55EOF
56
57INPUT_END
58
59 done &&
60 test_tick &&
61 cat <<INPUT_END
62commit refs/notes/commits
63committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
64data <<COMMIT
65no notes
66COMMIT
67
68deleteall
69
70INPUT_END
71
72 ) |
73 git fast-import --quiet &&
74 git config core.notesRef refs/notes/commits
75'
76
77test_sha1_based () {
78 (
79 start_note_commit &&
80 nr=$number_of_commits &&
b6d775dd 81 git rev-list refs/heads/main >out &&
0057c091
JH
82 while read sha1; do
83 note_path=$(echo "$sha1" | sed "$1")
84 cat <<INPUT_END &&
85M 100644 inline $note_path
86data <<EOF
87note for commit #$nr
88EOF
89
90INPUT_END
91
92 nr=$(($nr-1))
b6d775dd
ÆAB
93 done <out
94 ) >gfi &&
95 git fast-import --quiet <gfi
0057c091
JH
96}
97
98test_expect_success 'test notes in 2/38-fanout' 'test_sha1_based "s|^..|&/|"'
99test_expect_success 'verify notes in 2/38-fanout' 'verify_notes'
100
0057c091
JH
101test_expect_success 'test notes in 2/2/36-fanout' 'test_sha1_based "s|^\(..\)\(..\)|\1/\2/|"'
102test_expect_success 'verify notes in 2/2/36-fanout' 'verify_notes'
103
851c2b37
JH
104test_expect_success 'test notes in 2/2/2/34-fanout' 'test_sha1_based "s|^\(..\)\(..\)\(..\)|\1/\2/\3/|"'
105test_expect_success 'verify notes in 2/2/2/34-fanout' 'verify_notes'
106
a099469b
JH
107test_same_notes () {
108 (
109 start_note_commit &&
110 nr=$number_of_commits &&
d6c6b108 111 git rev-list refs/heads/main |
a099469b
JH
112 while read sha1; do
113 first_note_path=$(echo "$sha1" | sed "$1")
114 second_note_path=$(echo "$sha1" | sed "$2")
115 cat <<INPUT_END &&
116M 100644 inline $second_note_path
117data <<EOF
118note for commit #$nr
119EOF
120
121M 100644 inline $first_note_path
122data <<EOF
123note for commit #$nr
124EOF
125
126INPUT_END
127
128 nr=$(($nr-1))
129 done
130 ) |
131 git fast-import --quiet
132}
133
851c2b37
JH
134test_expect_success 'test same notes in no fanout and 2/38-fanout' 'test_same_notes "s|^..|&/|" ""'
135test_expect_success 'verify same notes in no fanout and 2/38-fanout' 'verify_notes'
136
137test_expect_success 'test same notes in no fanout and 2/2/36-fanout' 'test_same_notes "s|^\(..\)\(..\)|\1/\2/|" ""'
138test_expect_success 'verify same notes in no fanout and 2/2/36-fanout' 'verify_notes'
a099469b
JH
139
140test_expect_success 'test same notes in 2/38-fanout and 2/2/36-fanout' 'test_same_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^..|&/|"'
141test_expect_success 'verify same notes in 2/38-fanout and 2/2/36-fanout' 'verify_notes'
142
851c2b37
JH
143test_expect_success 'test same notes in 2/2/2/34-fanout and 2/2/36-fanout' 'test_same_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^\(..\)\(..\)\(..\)|\1/\2/\3/|"'
144test_expect_success 'verify same notes in 2/2/2/34-fanout and 2/2/36-fanout' 'verify_notes'
a099469b
JH
145
146test_concatenated_notes () {
147 (
148 start_note_commit &&
149 nr=$number_of_commits &&
d6c6b108 150 git rev-list refs/heads/main |
a099469b
JH
151 while read sha1; do
152 first_note_path=$(echo "$sha1" | sed "$1")
153 second_note_path=$(echo "$sha1" | sed "$2")
154 cat <<INPUT_END &&
155M 100644 inline $second_note_path
156data <<EOF
157second note for commit #$nr
158EOF
159
160M 100644 inline $first_note_path
161data <<EOF
162first note for commit #$nr
163EOF
164
165INPUT_END
166
167 nr=$(($nr-1))
168 done
169 ) |
170 git fast-import --quiet
171}
172
173verify_concatenated_notes () {
32a36b4d
JH
174 git log | grep "^ " > output &&
175 i=$number_of_commits &&
176 while [ $i -gt 0 ]; do
177 echo " commit #$i" &&
178 echo " first note for commit #$i" &&
d4990c4b 179 echo " " &&
32a36b4d 180 echo " second note for commit #$i" &&
db5875aa 181 i=$(($i-1)) || return 1
32a36b4d
JH
182 done > expect &&
183 test_cmp expect output
a099469b
JH
184}
185
851c2b37
JH
186test_expect_success 'test notes in no fanout concatenated with 2/38-fanout' 'test_concatenated_notes "s|^..|&/|" ""'
187test_expect_success 'verify notes in no fanout concatenated with 2/38-fanout' 'verify_concatenated_notes'
188
189test_expect_success 'test notes in no fanout concatenated with 2/2/36-fanout' 'test_concatenated_notes "s|^\(..\)\(..\)|\1/\2/|" ""'
190test_expect_success 'verify notes in no fanout concatenated with 2/2/36-fanout' 'verify_concatenated_notes'
a099469b
JH
191
192test_expect_success 'test notes in 2/38-fanout concatenated with 2/2/36-fanout' 'test_concatenated_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^..|&/|"'
193test_expect_success 'verify notes in 2/38-fanout concatenated with 2/2/36-fanout' 'verify_concatenated_notes'
194
851c2b37
JH
195test_expect_success 'test notes in 2/2/36-fanout concatenated with 2/2/2/34-fanout' 'test_concatenated_notes "s|^\(..\)\(..\)\(..\)|\1/\2/\3/|" "s|^\(..\)\(..\)|\1/\2/|"'
196test_expect_success 'verify notes in 2/2/36-fanout concatenated with 2/2/2/34-fanout' 'verify_concatenated_notes'
a099469b 197
0057c091 198test_done