]>
Commit | Line | Data |
---|---|---|
65d9fb48 JS |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2007 Johannes E. Schindelin | |
4 | # | |
5 | ||
6 | test_description='Test commit notes' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
10 | cat > fake_editor.sh << \EOF | |
97a449ee | 11 | #!/bin/sh |
65d9fb48 JS |
12 | echo "$MSG" > "$1" |
13 | echo "$MSG" >& 2 | |
14 | EOF | |
15 | chmod a+x fake_editor.sh | |
cd067d3b JH |
16 | GIT_EDITOR=./fake_editor.sh |
17 | export GIT_EDITOR | |
65d9fb48 JS |
18 | |
19 | test_expect_success 'cannot annotate non-existing HEAD' ' | |
7aa4754e | 20 | (MSG=3 && export MSG && test_must_fail git notes add) |
65d9fb48 JS |
21 | ' |
22 | ||
23 | test_expect_success setup ' | |
24 | : > a1 && | |
25 | git add a1 && | |
26 | test_tick && | |
27 | git commit -m 1st && | |
28 | : > a2 && | |
29 | git add a2 && | |
30 | test_tick && | |
31 | git commit -m 2nd | |
32 | ' | |
33 | ||
34 | test_expect_success 'need valid notes ref' ' | |
35 | (MSG=1 GIT_NOTES_REF=/ && export MSG GIT_NOTES_REF && | |
7aa4754e | 36 | test_must_fail git notes add) && |
65d9fb48 JS |
37 | (MSG=2 GIT_NOTES_REF=/ && export MSG GIT_NOTES_REF && |
38 | test_must_fail git notes show) | |
39 | ' | |
40 | ||
7aa4754e | 41 | test_expect_success 'refusing to add notes in refs/heads/' ' |
65d9fb48 JS |
42 | (MSG=1 GIT_NOTES_REF=refs/heads/bogus && |
43 | export MSG GIT_NOTES_REF && | |
7aa4754e | 44 | test_must_fail git notes add) |
65d9fb48 JS |
45 | ' |
46 | ||
7aa4754e | 47 | test_expect_success 'refusing to edit notes in refs/remotes/' ' |
65d9fb48 JS |
48 | (MSG=1 GIT_NOTES_REF=refs/remotes/bogus && |
49 | export MSG GIT_NOTES_REF && | |
50 | test_must_fail git notes edit) | |
51 | ' | |
52 | ||
53 | # 1 indicates caught gracefully by die, 128 means git-show barked | |
54 | test_expect_success 'handle empty notes gracefully' ' | |
0155a64e | 55 | test_expect_code 1 git notes show |
65d9fb48 JS |
56 | ' |
57 | ||
636db2c0 JH |
58 | test_expect_success 'show non-existent notes entry with %N' ' |
59 | for l in A B | |
60 | do | |
61 | echo "$l" | |
62 | done >expect && | |
63 | git show -s --format='A%n%NB' >output && | |
64 | test_cmp expect output | |
65 | ' | |
66 | ||
65d9fb48 JS |
67 | test_expect_success 'create notes' ' |
68 | git config core.notesRef refs/notes/commits && | |
7aa4754e | 69 | MSG=b4 git notes add && |
cd067d3b JH |
70 | test ! -f .git/NOTES_EDITMSG && |
71 | test 1 = $(git ls-tree refs/notes/commits | wc -l) && | |
7aa4754e | 72 | test b4 = $(git notes show) && |
cd067d3b JH |
73 | git show HEAD^ && |
74 | test_must_fail git notes show HEAD^ | |
75 | ' | |
76 | ||
636db2c0 JH |
77 | test_expect_success 'show notes entry with %N' ' |
78 | for l in A b4 B | |
79 | do | |
80 | echo "$l" | |
81 | done >expect && | |
82 | git show -s --format='A%n%NB' >output && | |
83 | test_cmp expect output | |
84 | ' | |
85 | ||
4d80fa8f MG |
86 | cat >expect <<EOF |
87 | d423f8c refs/notes/commits@{0}: notes: Notes added by 'git notes add' | |
88 | EOF | |
89 | ||
b2e256b0 | 90 | test_expect_success 'create reflog entry' ' |
4d80fa8f MG |
91 | git reflog show refs/notes/commits >output && |
92 | test_cmp expect output | |
93 | ' | |
94 | ||
cd067d3b | 95 | test_expect_success 'edit existing notes' ' |
7aa4754e JH |
96 | MSG=b3 git notes edit && |
97 | test ! -f .git/NOTES_EDITMSG && | |
98 | test 1 = $(git ls-tree refs/notes/commits | wc -l) && | |
99 | test b3 = $(git notes show) && | |
100 | git show HEAD^ && | |
101 | test_must_fail git notes show HEAD^ | |
102 | ' | |
103 | ||
84a7e35e JH |
104 | test_expect_success 'cannot "git notes add -m" where notes already exists' ' |
105 | test_must_fail git notes add -m "b2" && | |
7aa4754e JH |
106 | test ! -f .git/NOTES_EDITMSG && |
107 | test 1 = $(git ls-tree refs/notes/commits | wc -l) && | |
108 | test b3 = $(git notes show) && | |
109 | git show HEAD^ && | |
110 | test_must_fail git notes show HEAD^ | |
111 | ' | |
112 | ||
84a7e35e JH |
113 | test_expect_success 'can overwrite existing note with "git notes add -f -m"' ' |
114 | git notes add -f -m "b1" && | |
115 | test ! -f .git/NOTES_EDITMSG && | |
116 | test 1 = $(git ls-tree refs/notes/commits | wc -l) && | |
117 | test b1 = $(git notes show) && | |
118 | git show HEAD^ && | |
119 | test_must_fail git notes show HEAD^ | |
120 | ' | |
121 | ||
122 | test_expect_success 'add w/no options on existing note morphs into edit' ' | |
123 | MSG=b2 git notes add && | |
124 | test ! -f .git/NOTES_EDITMSG && | |
125 | test 1 = $(git ls-tree refs/notes/commits | wc -l) && | |
126 | test b2 = $(git notes show) && | |
127 | git show HEAD^ && | |
128 | test_must_fail git notes show HEAD^ | |
129 | ' | |
130 | ||
7aa4754e JH |
131 | test_expect_success 'can overwrite existing note with "git notes add -f"' ' |
132 | MSG=b1 git notes add -f && | |
cd067d3b | 133 | test ! -f .git/NOTES_EDITMSG && |
65d9fb48 JS |
134 | test 1 = $(git ls-tree refs/notes/commits | wc -l) && |
135 | test b1 = $(git notes show) && | |
136 | git show HEAD^ && | |
137 | test_must_fail git notes show HEAD^ | |
138 | ' | |
139 | ||
140 | cat > expect << EOF | |
141 | commit 268048bfb8a1fb38e703baceb8ab235421bf80c5 | |
142 | Author: A U Thor <author@example.com> | |
143 | Date: Thu Apr 7 15:14:13 2005 -0700 | |
144 | ||
145 | 2nd | |
146 | ||
147 | Notes: | |
148 | b1 | |
149 | EOF | |
150 | ||
151 | test_expect_success 'show notes' ' | |
152 | ! (git cat-file commit HEAD | grep b1) && | |
153 | git log -1 > output && | |
154 | test_cmp expect output | |
155 | ' | |
7aa4754e | 156 | |
65d9fb48 JS |
157 | test_expect_success 'create multi-line notes (setup)' ' |
158 | : > a3 && | |
159 | git add a3 && | |
160 | test_tick && | |
161 | git commit -m 3rd && | |
162 | MSG="b3 | |
163 | c3c3c3c3 | |
7aa4754e | 164 | d3d3d3" git notes add |
65d9fb48 JS |
165 | ' |
166 | ||
167 | cat > expect-multiline << EOF | |
168 | commit 1584215f1d29c65e99c6c6848626553fdd07fd75 | |
169 | Author: A U Thor <author@example.com> | |
170 | Date: Thu Apr 7 15:15:13 2005 -0700 | |
171 | ||
172 | 3rd | |
173 | ||
174 | Notes: | |
175 | b3 | |
176 | c3c3c3c3 | |
177 | d3d3d3 | |
178 | EOF | |
179 | ||
180 | printf "\n" >> expect-multiline | |
181 | cat expect >> expect-multiline | |
182 | ||
183 | test_expect_success 'show multi-line notes' ' | |
184 | git log -2 > output && | |
185 | test_cmp expect-multiline output | |
186 | ' | |
cd067d3b | 187 | test_expect_success 'create -F notes (setup)' ' |
d9246d43 JH |
188 | : > a4 && |
189 | git add a4 && | |
190 | test_tick && | |
191 | git commit -m 4th && | |
192 | echo "xyzzy" > note5 && | |
7aa4754e | 193 | git notes add -F note5 |
d9246d43 JH |
194 | ' |
195 | ||
cd067d3b | 196 | cat > expect-F << EOF |
d9246d43 JH |
197 | commit 15023535574ded8b1a89052b32673f84cf9582b8 |
198 | Author: A U Thor <author@example.com> | |
199 | Date: Thu Apr 7 15:16:13 2005 -0700 | |
200 | ||
201 | 4th | |
202 | ||
203 | Notes: | |
d9246d43 | 204 | xyzzy |
d9246d43 JH |
205 | EOF |
206 | ||
cd067d3b JH |
207 | printf "\n" >> expect-F |
208 | cat expect-multiline >> expect-F | |
d9246d43 | 209 | |
cd067d3b | 210 | test_expect_success 'show -F notes' ' |
d9246d43 | 211 | git log -3 > output && |
cd067d3b | 212 | test_cmp expect-F output |
d9246d43 | 213 | ' |
65d9fb48 | 214 | |
84a7e35e JH |
215 | test_expect_success 'Re-adding -F notes without -f fails' ' |
216 | echo "zyxxy" > note5 && | |
217 | test_must_fail git notes add -F note5 && | |
218 | git log -3 > output && | |
219 | test_cmp expect-F output | |
220 | ' | |
221 | ||
66b2ed09 JH |
222 | cat >expect << EOF |
223 | commit 15023535574ded8b1a89052b32673f84cf9582b8 | |
224 | tree e070e3af51011e47b183c33adf9736736a525709 | |
225 | parent 1584215f1d29c65e99c6c6848626553fdd07fd75 | |
226 | author A U Thor <author@example.com> 1112912173 -0700 | |
227 | committer C O Mitter <committer@example.com> 1112912173 -0700 | |
228 | ||
229 | 4th | |
230 | EOF | |
231 | test_expect_success 'git log --pretty=raw does not show notes' ' | |
232 | git log -1 --pretty=raw >output && | |
233 | test_cmp expect output | |
234 | ' | |
235 | ||
236 | cat >>expect <<EOF | |
237 | ||
238 | Notes: | |
66b2ed09 | 239 | xyzzy |
66b2ed09 JH |
240 | EOF |
241 | test_expect_success 'git log --show-notes' ' | |
242 | git log -1 --pretty=raw --show-notes >output && | |
243 | test_cmp expect output | |
244 | ' | |
245 | ||
246 | test_expect_success 'git log --no-notes' ' | |
247 | git log -1 --no-notes >output && | |
cd067d3b | 248 | ! grep xyzzy output |
66b2ed09 JH |
249 | ' |
250 | ||
251 | test_expect_success 'git format-patch does not show notes' ' | |
252 | git format-patch -1 --stdout >output && | |
cd067d3b | 253 | ! grep xyzzy output |
66b2ed09 JH |
254 | ' |
255 | ||
256 | test_expect_success 'git format-patch --show-notes does show notes' ' | |
257 | git format-patch --show-notes -1 --stdout >output && | |
cd067d3b | 258 | grep xyzzy output |
66b2ed09 JH |
259 | ' |
260 | ||
7dccadf3 JH |
261 | for pretty in \ |
262 | "" --pretty --pretty=raw --pretty=short --pretty=medium \ | |
263 | --pretty=full --pretty=fuller --pretty=format:%s --oneline | |
66b2ed09 JH |
264 | do |
265 | case "$pretty" in | |
266 | "") p= not= negate="" ;; | |
7dccadf3 | 267 | ?*) p="$pretty" not=" not" negate="!" ;; |
66b2ed09 JH |
268 | esac |
269 | test_expect_success "git show $pretty does$not show notes" ' | |
270 | git show $p >output && | |
cd067d3b | 271 | eval "$negate grep xyzzy output" |
66b2ed09 JH |
272 | ' |
273 | done | |
274 | ||
7249e912 JK |
275 | test_expect_success 'setup alternate notes ref' ' |
276 | git notes --ref=alternate add -m alternate | |
277 | ' | |
278 | ||
279 | test_expect_success 'git log --notes shows default notes' ' | |
280 | git log -1 --notes >output && | |
281 | grep xyzzy output && | |
282 | ! grep alternate output | |
283 | ' | |
284 | ||
285 | test_expect_success 'git log --notes=X shows only X' ' | |
286 | git log -1 --notes=alternate >output && | |
287 | ! grep xyzzy output && | |
288 | grep alternate output | |
289 | ' | |
290 | ||
291 | test_expect_success 'git log --notes --notes=X shows both' ' | |
292 | git log -1 --notes --notes=alternate >output && | |
293 | grep xyzzy output && | |
294 | grep alternate output | |
295 | ' | |
296 | ||
92e0d425 JK |
297 | test_expect_success 'git log --no-notes resets default state' ' |
298 | git log -1 --notes --notes=alternate \ | |
299 | --no-notes --notes=alternate \ | |
300 | >output && | |
301 | ! grep xyzzy output && | |
302 | grep alternate output | |
303 | ' | |
304 | ||
305 | test_expect_success 'git log --no-notes resets ref list' ' | |
306 | git log -1 --notes --notes=alternate \ | |
307 | --no-notes --notes \ | |
308 | >output && | |
309 | grep xyzzy output && | |
310 | ! grep alternate output | |
311 | ' | |
312 | ||
cd067d3b | 313 | test_expect_success 'create -m notes (setup)' ' |
3b78cdbe JH |
314 | : > a5 && |
315 | git add a5 && | |
316 | test_tick && | |
317 | git commit -m 5th && | |
7aa4754e | 318 | git notes add -m spam -m "foo |
cd067d3b JH |
319 | bar |
320 | baz" | |
3b78cdbe JH |
321 | ' |
322 | ||
cd067d3b JH |
323 | whitespace=" " |
324 | cat > expect-m << EOF | |
3b78cdbe JH |
325 | commit bd1753200303d0a0344be813e504253b3d98e74d |
326 | Author: A U Thor <author@example.com> | |
327 | Date: Thu Apr 7 15:17:13 2005 -0700 | |
328 | ||
329 | 5th | |
330 | ||
cd067d3b JH |
331 | Notes: |
332 | spam | |
333 | $whitespace | |
334 | foo | |
335 | bar | |
336 | baz | |
337 | EOF | |
338 | ||
339 | printf "\n" >> expect-m | |
340 | cat expect-F >> expect-m | |
341 | ||
342 | test_expect_success 'show -m notes' ' | |
343 | git log -4 > output && | |
344 | test_cmp expect-m output | |
345 | ' | |
346 | ||
7aa4754e JH |
347 | test_expect_success 'remove note with add -f -F /dev/null (setup)' ' |
348 | git notes add -f -F /dev/null | |
a0b4dfa9 JH |
349 | ' |
350 | ||
351 | cat > expect-rm-F << EOF | |
352 | commit bd1753200303d0a0344be813e504253b3d98e74d | |
353 | Author: A U Thor <author@example.com> | |
354 | Date: Thu Apr 7 15:17:13 2005 -0700 | |
355 | ||
356 | 5th | |
357 | EOF | |
358 | ||
359 | printf "\n" >> expect-rm-F | |
360 | cat expect-F >> expect-rm-F | |
361 | ||
362 | test_expect_success 'verify note removal with -F /dev/null' ' | |
363 | git log -4 > output && | |
364 | test_cmp expect-rm-F output && | |
ce14e0b2 | 365 | test_must_fail git notes show |
a0b4dfa9 JH |
366 | ' |
367 | ||
368 | test_expect_success 'do not create empty note with -m "" (setup)' ' | |
7aa4754e | 369 | git notes add -m "" |
a0b4dfa9 JH |
370 | ' |
371 | ||
372 | test_expect_success 'verify non-creation of note with -m ""' ' | |
373 | git log -4 > output && | |
374 | test_cmp expect-rm-F output && | |
ce14e0b2 | 375 | test_must_fail git notes show |
a0b4dfa9 JH |
376 | ' |
377 | ||
348f199b JH |
378 | cat > expect-combine_m_and_F << EOF |
379 | foo | |
380 | ||
381 | xyzzy | |
382 | ||
383 | bar | |
384 | ||
385 | zyxxy | |
386 | ||
387 | baz | |
388 | EOF | |
389 | ||
390 | test_expect_success 'create note with combination of -m and -F' ' | |
391 | echo "xyzzy" > note_a && | |
392 | echo "zyxxy" > note_b && | |
393 | git notes add -m "foo" -F note_a -m "bar" -F note_b -m "baz" && | |
394 | git notes show > output && | |
395 | test_cmp expect-combine_m_and_F output | |
396 | ' | |
397 | ||
92b3385f | 398 | test_expect_success 'remove note with "git notes remove" (setup)' ' |
348f199b JH |
399 | git notes remove HEAD^ && |
400 | git notes remove | |
92b3385f JH |
401 | ' |
402 | ||
403 | cat > expect-rm-remove << EOF | |
404 | commit bd1753200303d0a0344be813e504253b3d98e74d | |
405 | Author: A U Thor <author@example.com> | |
406 | Date: Thu Apr 7 15:17:13 2005 -0700 | |
407 | ||
408 | 5th | |
409 | ||
410 | commit 15023535574ded8b1a89052b32673f84cf9582b8 | |
411 | Author: A U Thor <author@example.com> | |
412 | Date: Thu Apr 7 15:16:13 2005 -0700 | |
413 | ||
414 | 4th | |
415 | EOF | |
416 | ||
417 | printf "\n" >> expect-rm-remove | |
418 | cat expect-multiline >> expect-rm-remove | |
419 | ||
420 | test_expect_success 'verify note removal with "git notes remove"' ' | |
421 | git log -4 > output && | |
422 | test_cmp expect-rm-remove output && | |
ce14e0b2 | 423 | test_must_fail git notes show HEAD^ |
92b3385f JH |
424 | ' |
425 | ||
e397421a JH |
426 | cat > expect << EOF |
427 | c18dc024e14f08d18d14eea0d747ff692d66d6a3 1584215f1d29c65e99c6c6848626553fdd07fd75 | |
428 | c9c6af7f78bc47490dbf3e822cf2f3c24d4b9061 268048bfb8a1fb38e703baceb8ab235421bf80c5 | |
429 | EOF | |
430 | ||
1ee1e43d JH |
431 | test_expect_success 'removing non-existing note should not create new commit' ' |
432 | git rev-parse --verify refs/notes/commits > before_commit && | |
433 | test_must_fail git notes remove HEAD^ && | |
434 | git rev-parse --verify refs/notes/commits > after_commit && | |
435 | test_cmp before_commit after_commit | |
436 | ' | |
437 | ||
c3ab1a8e JH |
438 | test_expect_success 'removing more than one' ' |
439 | before=$(git rev-parse --verify refs/notes/commits) && | |
440 | test_when_finished "git update-ref refs/notes/commits $before" && | |
441 | ||
442 | # We have only two -- add another and make sure it stays | |
443 | git notes add -m "extra" && | |
444 | git notes list HEAD >after-removal-expect && | |
445 | git notes remove HEAD^^ HEAD^^^ && | |
446 | git notes list | sed -e "s/ .*//" >actual && | |
447 | test_cmp after-removal-expect actual | |
448 | ' | |
449 | ||
450 | test_expect_success 'removing is atomic' ' | |
451 | before=$(git rev-parse --verify refs/notes/commits) && | |
452 | test_when_finished "git update-ref refs/notes/commits $before" && | |
453 | test_must_fail git notes remove HEAD^^ HEAD^^^ HEAD^ && | |
454 | after=$(git rev-parse --verify refs/notes/commits) && | |
455 | test "$before" = "$after" | |
456 | ' | |
457 | ||
2d370d2f JH |
458 | test_expect_success 'removing with --ignore-missing' ' |
459 | before=$(git rev-parse --verify refs/notes/commits) && | |
460 | test_when_finished "git update-ref refs/notes/commits $before" && | |
461 | ||
462 | # We have only two -- add another and make sure it stays | |
463 | git notes add -m "extra" && | |
464 | git notes list HEAD >after-removal-expect && | |
465 | git notes remove --ignore-missing HEAD^^ HEAD^^^ HEAD^ && | |
466 | git notes list | sed -e "s/ .*//" >actual && | |
467 | test_cmp after-removal-expect actual | |
468 | ' | |
469 | ||
470 | test_expect_success 'removing with --ignore-missing but bogus ref' ' | |
471 | before=$(git rev-parse --verify refs/notes/commits) && | |
472 | test_when_finished "git update-ref refs/notes/commits $before" && | |
473 | test_must_fail git notes remove --ignore-missing HEAD^^ HEAD^^^ NO-SUCH-COMMIT && | |
474 | after=$(git rev-parse --verify refs/notes/commits) && | |
475 | test "$before" = "$after" | |
476 | ' | |
477 | ||
46538012 JH |
478 | test_expect_success 'remove reads from --stdin' ' |
479 | before=$(git rev-parse --verify refs/notes/commits) && | |
480 | test_when_finished "git update-ref refs/notes/commits $before" && | |
481 | ||
482 | # We have only two -- add another and make sure it stays | |
483 | git notes add -m "extra" && | |
484 | git notes list HEAD >after-removal-expect && | |
485 | git rev-parse HEAD^^ HEAD^^^ >input && | |
486 | git notes remove --stdin <input && | |
487 | git notes list | sed -e "s/ .*//" >actual && | |
488 | test_cmp after-removal-expect actual | |
489 | ' | |
490 | ||
491 | test_expect_success 'remove --stdin is also atomic' ' | |
492 | before=$(git rev-parse --verify refs/notes/commits) && | |
493 | test_when_finished "git update-ref refs/notes/commits $before" && | |
494 | git rev-parse HEAD^^ HEAD^^^ HEAD^ >input && | |
495 | test_must_fail git notes remove --stdin <input && | |
496 | after=$(git rev-parse --verify refs/notes/commits) && | |
497 | test "$before" = "$after" | |
498 | ' | |
499 | ||
500 | test_expect_success 'removing with --stdin --ignore-missing' ' | |
501 | before=$(git rev-parse --verify refs/notes/commits) && | |
502 | test_when_finished "git update-ref refs/notes/commits $before" && | |
503 | ||
504 | # We have only two -- add another and make sure it stays | |
505 | git notes add -m "extra" && | |
506 | git notes list HEAD >after-removal-expect && | |
507 | git rev-parse HEAD^^ HEAD^^^ HEAD^ >input && | |
508 | git notes remove --ignore-missing --stdin <input && | |
509 | git notes list | sed -e "s/ .*//" >actual && | |
510 | test_cmp after-removal-expect actual | |
511 | ' | |
512 | ||
e397421a JH |
513 | test_expect_success 'list notes with "git notes list"' ' |
514 | git notes list > output && | |
515 | test_cmp expect output | |
516 | ' | |
517 | ||
518 | test_expect_success 'list notes with "git notes"' ' | |
519 | git notes > output && | |
520 | test_cmp expect output | |
521 | ' | |
522 | ||
523 | cat > expect << EOF | |
524 | c18dc024e14f08d18d14eea0d747ff692d66d6a3 | |
525 | EOF | |
526 | ||
527 | test_expect_success 'list specific note with "git notes list <object>"' ' | |
528 | git notes list HEAD^^ > output && | |
529 | test_cmp expect output | |
530 | ' | |
531 | ||
532 | cat > expect << EOF | |
533 | EOF | |
534 | ||
535 | test_expect_success 'listing non-existing notes fails' ' | |
536 | test_must_fail git notes list HEAD > output && | |
537 | test_cmp expect output | |
538 | ' | |
539 | ||
2347fae5 JH |
540 | cat > expect << EOF |
541 | Initial set of notes | |
542 | ||
543 | More notes appended with git notes append | |
544 | EOF | |
545 | ||
546 | test_expect_success 'append to existing note with "git notes append"' ' | |
547 | git notes add -m "Initial set of notes" && | |
548 | git notes append -m "More notes appended with git notes append" && | |
549 | git notes show > output && | |
550 | test_cmp expect output | |
551 | ' | |
552 | ||
74884b52 SB |
553 | cat > expect_list << EOF |
554 | c18dc024e14f08d18d14eea0d747ff692d66d6a3 1584215f1d29c65e99c6c6848626553fdd07fd75 | |
555 | c9c6af7f78bc47490dbf3e822cf2f3c24d4b9061 268048bfb8a1fb38e703baceb8ab235421bf80c5 | |
556 | 4b6ad22357cc8a1296720574b8d2fbc22fab0671 bd1753200303d0a0344be813e504253b3d98e74d | |
557 | EOF | |
558 | ||
559 | test_expect_success '"git notes list" does not expand to "git notes list HEAD"' ' | |
560 | git notes list > output && | |
561 | test_cmp expect_list output | |
562 | ' | |
563 | ||
2347fae5 JH |
564 | test_expect_success 'appending empty string does not change existing note' ' |
565 | git notes append -m "" && | |
566 | git notes show > output && | |
567 | test_cmp expect output | |
568 | ' | |
569 | ||
570 | test_expect_success 'git notes append == add when there is no existing note' ' | |
571 | git notes remove HEAD && | |
572 | test_must_fail git notes list HEAD && | |
573 | git notes append -m "Initial set of notes | |
574 | ||
575 | More notes appended with git notes append" && | |
576 | git notes show > output && | |
577 | test_cmp expect output | |
578 | ' | |
579 | ||
580 | test_expect_success 'appending empty string to non-existing note does not create note' ' | |
581 | git notes remove HEAD && | |
582 | test_must_fail git notes list HEAD && | |
583 | git notes append -m "" && | |
584 | test_must_fail git notes list HEAD | |
585 | ' | |
586 | ||
cd067d3b JH |
587 | test_expect_success 'create other note on a different notes ref (setup)' ' |
588 | : > a6 && | |
589 | git add a6 && | |
590 | test_tick && | |
591 | git commit -m 6th && | |
7aa4754e | 592 | GIT_NOTES_REF="refs/notes/other" git notes add -m "other note" |
cd067d3b JH |
593 | ' |
594 | ||
595 | cat > expect-other << EOF | |
596 | commit 387a89921c73d7ed72cd94d179c1c7048ca47756 | |
597 | Author: A U Thor <author@example.com> | |
598 | Date: Thu Apr 7 15:18:13 2005 -0700 | |
599 | ||
600 | 6th | |
601 | ||
894a9d33 | 602 | Notes (other): |
3b78cdbe JH |
603 | other note |
604 | EOF | |
605 | ||
606 | cat > expect-not-other << EOF | |
cd067d3b | 607 | commit 387a89921c73d7ed72cd94d179c1c7048ca47756 |
3b78cdbe | 608 | Author: A U Thor <author@example.com> |
cd067d3b | 609 | Date: Thu Apr 7 15:18:13 2005 -0700 |
3b78cdbe | 610 | |
cd067d3b | 611 | 6th |
3b78cdbe JH |
612 | EOF |
613 | ||
614 | test_expect_success 'Do not show note on other ref by default' ' | |
615 | git log -1 > output && | |
616 | test_cmp expect-not-other output | |
617 | ' | |
618 | ||
619 | test_expect_success 'Do show note when ref is given in GIT_NOTES_REF' ' | |
620 | GIT_NOTES_REF="refs/notes/other" git log -1 > output && | |
621 | test_cmp expect-other output | |
622 | ' | |
623 | ||
624 | test_expect_success 'Do show note when ref is given in core.notesRef config' ' | |
625 | git config core.notesRef "refs/notes/other" && | |
626 | git log -1 > output && | |
627 | test_cmp expect-other output | |
628 | ' | |
629 | ||
630 | test_expect_success 'Do not show note when core.notesRef is overridden' ' | |
631 | GIT_NOTES_REF="refs/notes/wrong" git log -1 > output && | |
632 | test_cmp expect-not-other output | |
633 | ' | |
634 | ||
894a9d33 TR |
635 | cat > expect-both << EOF |
636 | commit 387a89921c73d7ed72cd94d179c1c7048ca47756 | |
637 | Author: A U Thor <author@example.com> | |
638 | Date: Thu Apr 7 15:18:13 2005 -0700 | |
639 | ||
640 | 6th | |
641 | ||
642 | Notes: | |
643 | order test | |
644 | ||
645 | Notes (other): | |
646 | other note | |
647 | ||
648 | commit bd1753200303d0a0344be813e504253b3d98e74d | |
649 | Author: A U Thor <author@example.com> | |
650 | Date: Thu Apr 7 15:17:13 2005 -0700 | |
651 | ||
652 | 5th | |
653 | ||
654 | Notes: | |
655 | replacement for deleted note | |
656 | EOF | |
657 | ||
658 | test_expect_success 'Show all notes when notes.displayRef=refs/notes/*' ' | |
659 | GIT_NOTES_REF=refs/notes/commits git notes add \ | |
660 | -m"replacement for deleted note" HEAD^ && | |
661 | GIT_NOTES_REF=refs/notes/commits git notes add -m"order test" && | |
662 | git config --unset core.notesRef && | |
663 | git config notes.displayRef "refs/notes/*" && | |
664 | git log -2 > output && | |
665 | test_cmp expect-both output | |
666 | ' | |
667 | ||
668 | test_expect_success 'core.notesRef is implicitly in notes.displayRef' ' | |
669 | git config core.notesRef refs/notes/commits && | |
670 | git config notes.displayRef refs/notes/other && | |
671 | git log -2 > output && | |
672 | test_cmp expect-both output | |
673 | ' | |
674 | ||
675 | test_expect_success 'notes.displayRef can be given more than once' ' | |
676 | git config --unset core.notesRef && | |
677 | git config notes.displayRef refs/notes/commits && | |
678 | git config --add notes.displayRef refs/notes/other && | |
679 | git log -2 > output && | |
680 | test_cmp expect-both output | |
681 | ' | |
682 | ||
683 | cat > expect-both-reversed << EOF | |
684 | commit 387a89921c73d7ed72cd94d179c1c7048ca47756 | |
685 | Author: A U Thor <author@example.com> | |
686 | Date: Thu Apr 7 15:18:13 2005 -0700 | |
687 | ||
688 | 6th | |
689 | ||
690 | Notes (other): | |
691 | other note | |
692 | ||
693 | Notes: | |
694 | order test | |
695 | EOF | |
696 | ||
697 | test_expect_success 'notes.displayRef respects order' ' | |
698 | git config core.notesRef refs/notes/other && | |
699 | git config --unset-all notes.displayRef && | |
700 | git config notes.displayRef refs/notes/commits && | |
701 | git log -1 > output && | |
702 | test_cmp expect-both-reversed output | |
703 | ' | |
704 | ||
705 | test_expect_success 'GIT_NOTES_DISPLAY_REF works' ' | |
706 | git config --unset-all core.notesRef && | |
707 | git config --unset-all notes.displayRef && | |
708 | GIT_NOTES_DISPLAY_REF=refs/notes/commits:refs/notes/other \ | |
709 | git log -2 > output && | |
710 | test_cmp expect-both output | |
711 | ' | |
712 | ||
713 | cat > expect-none << EOF | |
714 | commit 387a89921c73d7ed72cd94d179c1c7048ca47756 | |
715 | Author: A U Thor <author@example.com> | |
716 | Date: Thu Apr 7 15:18:13 2005 -0700 | |
717 | ||
718 | 6th | |
719 | ||
720 | commit bd1753200303d0a0344be813e504253b3d98e74d | |
721 | Author: A U Thor <author@example.com> | |
722 | Date: Thu Apr 7 15:17:13 2005 -0700 | |
723 | ||
724 | 5th | |
725 | EOF | |
726 | ||
727 | test_expect_success 'GIT_NOTES_DISPLAY_REF overrides config' ' | |
728 | git config notes.displayRef "refs/notes/*" && | |
729 | GIT_NOTES_REF= GIT_NOTES_DISPLAY_REF= git log -2 > output && | |
730 | test_cmp expect-none output | |
731 | ' | |
732 | ||
733 | test_expect_success '--show-notes=* adds to GIT_NOTES_DISPLAY_REF' ' | |
734 | GIT_NOTES_REF= GIT_NOTES_DISPLAY_REF= git log --show-notes=* -2 > output && | |
735 | test_cmp expect-both output | |
736 | ' | |
737 | ||
738 | cat > expect-commits << EOF | |
739 | commit 387a89921c73d7ed72cd94d179c1c7048ca47756 | |
740 | Author: A U Thor <author@example.com> | |
741 | Date: Thu Apr 7 15:18:13 2005 -0700 | |
742 | ||
743 | 6th | |
744 | ||
745 | Notes: | |
746 | order test | |
747 | EOF | |
748 | ||
749 | test_expect_success '--no-standard-notes' ' | |
750 | git log --no-standard-notes --show-notes=commits -1 > output && | |
751 | test_cmp expect-commits output | |
752 | ' | |
753 | ||
754 | test_expect_success '--standard-notes' ' | |
755 | git log --no-standard-notes --show-notes=commits \ | |
756 | --standard-notes -2 > output && | |
757 | test_cmp expect-both output | |
758 | ' | |
759 | ||
760 | test_expect_success '--show-notes=ref accumulates' ' | |
761 | git log --show-notes=other --show-notes=commits \ | |
762 | --no-standard-notes -1 > output && | |
763 | test_cmp expect-both-reversed output | |
764 | ' | |
765 | ||
b24bb997 | 766 | test_expect_success 'Allow notes on non-commits (trees, blobs, tags)' ' |
894a9d33 | 767 | git config core.notesRef refs/notes/other && |
2dec68cf | 768 | echo "Note on a tree" > expect && |
7aa4754e | 769 | git notes add -m "Note on a tree" HEAD: && |
b24bb997 JH |
770 | git notes show HEAD: > actual && |
771 | test_cmp expect actual && | |
2dec68cf | 772 | echo "Note on a blob" > expect && |
b24bb997 | 773 | filename=$(git ls-tree --name-only HEAD | head -n1) && |
7aa4754e | 774 | git notes add -m "Note on a blob" HEAD:$filename && |
b24bb997 JH |
775 | git notes show HEAD:$filename > actual && |
776 | test_cmp expect actual && | |
2dec68cf | 777 | echo "Note on a tag" > expect && |
b24bb997 | 778 | git tag -a -m "This is an annotated tag" foobar HEAD^ && |
7aa4754e | 779 | git notes add -m "Note on a tag" foobar && |
b24bb997 JH |
780 | git notes show foobar > actual && |
781 | test_cmp expect actual | |
782 | ' | |
783 | ||
0691cff7 JH |
784 | cat > expect << EOF |
785 | commit 2ede89468182a62d0bde2583c736089bcf7d7e92 | |
786 | Author: A U Thor <author@example.com> | |
787 | Date: Thu Apr 7 15:19:13 2005 -0700 | |
788 | ||
789 | 7th | |
790 | ||
894a9d33 | 791 | Notes (other): |
0691cff7 JH |
792 | other note |
793 | EOF | |
794 | ||
795 | test_expect_success 'create note from other note with "git notes add -C"' ' | |
796 | : > a7 && | |
797 | git add a7 && | |
798 | test_tick && | |
799 | git commit -m 7th && | |
800 | git notes add -C $(git notes list HEAD^) && | |
801 | git log -1 > actual && | |
802 | test_cmp expect actual && | |
803 | test "$(git notes list HEAD)" = "$(git notes list HEAD^)" | |
804 | ' | |
805 | ||
806 | test_expect_success 'create note from non-existing note with "git notes add -C" fails' ' | |
807 | : > a8 && | |
808 | git add a8 && | |
809 | test_tick && | |
810 | git commit -m 8th && | |
811 | test_must_fail git notes add -C deadbeef && | |
812 | test_must_fail git notes list HEAD | |
813 | ' | |
814 | ||
815 | cat > expect << EOF | |
816 | commit 016e982bad97eacdbda0fcbd7ce5b0ba87c81f1b | |
817 | Author: A U Thor <author@example.com> | |
818 | Date: Thu Apr 7 15:21:13 2005 -0700 | |
819 | ||
820 | 9th | |
821 | ||
894a9d33 | 822 | Notes (other): |
0691cff7 JH |
823 | yet another note |
824 | EOF | |
825 | ||
826 | test_expect_success 'create note from other note with "git notes add -c"' ' | |
827 | : > a9 && | |
828 | git add a9 && | |
829 | test_tick && | |
830 | git commit -m 9th && | |
831 | MSG="yet another note" git notes add -c $(git notes list HEAD^^) && | |
832 | git log -1 > actual && | |
833 | test_cmp expect actual | |
834 | ' | |
835 | ||
836 | test_expect_success 'create note from non-existing note with "git notes add -c" fails' ' | |
837 | : > a10 && | |
838 | git add a10 && | |
839 | test_tick && | |
840 | git commit -m 10th && | |
b1edaf66 BC |
841 | ( |
842 | MSG="yet another note" && | |
843 | export MSG && | |
844 | test_must_fail git notes add -c deadbeef | |
845 | ) && | |
0691cff7 JH |
846 | test_must_fail git notes list HEAD |
847 | ' | |
848 | ||
849 | cat > expect << EOF | |
850 | commit 016e982bad97eacdbda0fcbd7ce5b0ba87c81f1b | |
851 | Author: A U Thor <author@example.com> | |
852 | Date: Thu Apr 7 15:21:13 2005 -0700 | |
853 | ||
854 | 9th | |
855 | ||
894a9d33 | 856 | Notes (other): |
0691cff7 JH |
857 | yet another note |
858 | $whitespace | |
859 | yet another note | |
860 | EOF | |
861 | ||
862 | test_expect_success 'append to note from other note with "git notes append -C"' ' | |
863 | git notes append -C $(git notes list HEAD^) HEAD^ && | |
864 | git log -1 HEAD^ > actual && | |
865 | test_cmp expect actual | |
866 | ' | |
867 | ||
868 | cat > expect << EOF | |
869 | commit ffed603236bfa3891c49644257a83598afe8ae5a | |
870 | Author: A U Thor <author@example.com> | |
871 | Date: Thu Apr 7 15:22:13 2005 -0700 | |
872 | ||
873 | 10th | |
874 | ||
894a9d33 | 875 | Notes (other): |
0691cff7 JH |
876 | other note |
877 | EOF | |
878 | ||
879 | test_expect_success 'create note from other note with "git notes append -c"' ' | |
880 | MSG="other note" git notes append -c $(git notes list HEAD^) && | |
881 | git log -1 > actual && | |
882 | test_cmp expect actual | |
883 | ' | |
884 | ||
885 | cat > expect << EOF | |
886 | commit ffed603236bfa3891c49644257a83598afe8ae5a | |
887 | Author: A U Thor <author@example.com> | |
888 | Date: Thu Apr 7 15:22:13 2005 -0700 | |
889 | ||
890 | 10th | |
891 | ||
894a9d33 | 892 | Notes (other): |
0691cff7 JH |
893 | other note |
894 | $whitespace | |
895 | yet another note | |
896 | EOF | |
897 | ||
898 | test_expect_success 'append to note from other note with "git notes append -c"' ' | |
899 | MSG="yet another note" git notes append -c $(git notes list HEAD) && | |
900 | git log -1 > actual && | |
901 | test_cmp expect actual | |
902 | ' | |
903 | ||
e73bbd96 JH |
904 | cat > expect << EOF |
905 | commit 6352c5e33dbcab725fe0579be16aa2ba8eb369be | |
906 | Author: A U Thor <author@example.com> | |
907 | Date: Thu Apr 7 15:23:13 2005 -0700 | |
908 | ||
909 | 11th | |
910 | ||
894a9d33 | 911 | Notes (other): |
e73bbd96 JH |
912 | other note |
913 | $whitespace | |
914 | yet another note | |
915 | EOF | |
916 | ||
917 | test_expect_success 'copy note with "git notes copy"' ' | |
918 | : > a11 && | |
919 | git add a11 && | |
920 | test_tick && | |
921 | git commit -m 11th && | |
922 | git notes copy HEAD^ HEAD && | |
923 | git log -1 > actual && | |
924 | test_cmp expect actual && | |
925 | test "$(git notes list HEAD)" = "$(git notes list HEAD^)" | |
926 | ' | |
927 | ||
928 | test_expect_success 'prevent overwrite with "git notes copy"' ' | |
929 | test_must_fail git notes copy HEAD~2 HEAD && | |
930 | git log -1 > actual && | |
931 | test_cmp expect actual && | |
932 | test "$(git notes list HEAD)" = "$(git notes list HEAD^)" | |
933 | ' | |
934 | ||
935 | cat > expect << EOF | |
936 | commit 6352c5e33dbcab725fe0579be16aa2ba8eb369be | |
937 | Author: A U Thor <author@example.com> | |
938 | Date: Thu Apr 7 15:23:13 2005 -0700 | |
939 | ||
940 | 11th | |
941 | ||
894a9d33 | 942 | Notes (other): |
e73bbd96 JH |
943 | yet another note |
944 | $whitespace | |
945 | yet another note | |
946 | EOF | |
947 | ||
948 | test_expect_success 'allow overwrite with "git notes copy -f"' ' | |
949 | git notes copy -f HEAD~2 HEAD && | |
950 | git log -1 > actual && | |
951 | test_cmp expect actual && | |
952 | test "$(git notes list HEAD)" = "$(git notes list HEAD~2)" | |
953 | ' | |
954 | ||
955 | test_expect_success 'cannot copy note from object without notes' ' | |
956 | : > a12 && | |
957 | git add a12 && | |
958 | test_tick && | |
959 | git commit -m 12th && | |
960 | : > a13 && | |
961 | git add a13 && | |
962 | test_tick && | |
963 | git commit -m 13th && | |
964 | test_must_fail git notes copy HEAD^ HEAD | |
965 | ' | |
966 | ||
160baa0d TR |
967 | cat > expect << EOF |
968 | commit e5d4fb5698d564ab8c73551538ecaf2b0c666185 | |
969 | Author: A U Thor <author@example.com> | |
970 | Date: Thu Apr 7 15:25:13 2005 -0700 | |
971 | ||
972 | 13th | |
973 | ||
974 | Notes (other): | |
975 | yet another note | |
976 | $whitespace | |
977 | yet another note | |
978 | ||
979 | commit 7038787dfe22a14c3867ce816dbba39845359719 | |
980 | Author: A U Thor <author@example.com> | |
981 | Date: Thu Apr 7 15:24:13 2005 -0700 | |
982 | ||
983 | 12th | |
984 | ||
985 | Notes (other): | |
986 | other note | |
987 | $whitespace | |
988 | yet another note | |
989 | EOF | |
990 | ||
991 | test_expect_success 'git notes copy --stdin' ' | |
992 | (echo $(git rev-parse HEAD~3) $(git rev-parse HEAD^); \ | |
993 | echo $(git rev-parse HEAD~2) $(git rev-parse HEAD)) | | |
994 | git notes copy --stdin && | |
995 | git log -2 > output && | |
996 | test_cmp expect output && | |
997 | test "$(git notes list HEAD)" = "$(git notes list HEAD~2)" && | |
998 | test "$(git notes list HEAD^)" = "$(git notes list HEAD~3)" | |
999 | ' | |
1000 | ||
6956f858 TR |
1001 | cat > expect << EOF |
1002 | commit 37a0d4cba38afef96ba54a3ea567e6dac575700b | |
1003 | Author: A U Thor <author@example.com> | |
1004 | Date: Thu Apr 7 15:27:13 2005 -0700 | |
1005 | ||
1006 | 15th | |
1007 | ||
1008 | commit be28d8b4d9951ad940d229ee3b0b9ee3b1ec273d | |
1009 | Author: A U Thor <author@example.com> | |
1010 | Date: Thu Apr 7 15:26:13 2005 -0700 | |
1011 | ||
1012 | 14th | |
1013 | EOF | |
1014 | ||
1015 | test_expect_success 'git notes copy --for-rewrite (unconfigured)' ' | |
1016 | test_commit 14th && | |
1017 | test_commit 15th && | |
1018 | (echo $(git rev-parse HEAD~3) $(git rev-parse HEAD^); \ | |
1019 | echo $(git rev-parse HEAD~2) $(git rev-parse HEAD)) | | |
1020 | git notes copy --for-rewrite=foo && | |
1021 | git log -2 > output && | |
1022 | test_cmp expect output | |
1023 | ' | |
1024 | ||
1025 | cat > expect << EOF | |
1026 | commit 37a0d4cba38afef96ba54a3ea567e6dac575700b | |
1027 | Author: A U Thor <author@example.com> | |
1028 | Date: Thu Apr 7 15:27:13 2005 -0700 | |
1029 | ||
1030 | 15th | |
1031 | ||
1032 | Notes (other): | |
1033 | yet another note | |
1034 | $whitespace | |
1035 | yet another note | |
1036 | ||
1037 | commit be28d8b4d9951ad940d229ee3b0b9ee3b1ec273d | |
1038 | Author: A U Thor <author@example.com> | |
1039 | Date: Thu Apr 7 15:26:13 2005 -0700 | |
1040 | ||
1041 | 14th | |
1042 | ||
1043 | Notes (other): | |
1044 | other note | |
1045 | $whitespace | |
1046 | yet another note | |
1047 | EOF | |
1048 | ||
1049 | test_expect_success 'git notes copy --for-rewrite (enabled)' ' | |
1050 | git config notes.rewriteMode overwrite && | |
1051 | git config notes.rewriteRef "refs/notes/*" && | |
1052 | (echo $(git rev-parse HEAD~3) $(git rev-parse HEAD^); \ | |
1053 | echo $(git rev-parse HEAD~2) $(git rev-parse HEAD)) | | |
1054 | git notes copy --for-rewrite=foo && | |
1055 | git log -2 > output && | |
1056 | test_cmp expect output | |
1057 | ' | |
1058 | ||
1059 | test_expect_success 'git notes copy --for-rewrite (disabled)' ' | |
1060 | git config notes.rewrite.bar false && | |
1061 | echo $(git rev-parse HEAD~3) $(git rev-parse HEAD) | | |
1062 | git notes copy --for-rewrite=bar && | |
1063 | git log -2 > output && | |
1064 | test_cmp expect output | |
1065 | ' | |
1066 | ||
1067 | cat > expect << EOF | |
1068 | commit 37a0d4cba38afef96ba54a3ea567e6dac575700b | |
1069 | Author: A U Thor <author@example.com> | |
1070 | Date: Thu Apr 7 15:27:13 2005 -0700 | |
1071 | ||
1072 | 15th | |
1073 | ||
1074 | Notes (other): | |
1075 | a fresh note | |
1076 | EOF | |
1077 | ||
1078 | test_expect_success 'git notes copy --for-rewrite (overwrite)' ' | |
1079 | git notes add -f -m"a fresh note" HEAD^ && | |
1080 | echo $(git rev-parse HEAD^) $(git rev-parse HEAD) | | |
1081 | git notes copy --for-rewrite=foo && | |
1082 | git log -1 > output && | |
1083 | test_cmp expect output | |
1084 | ' | |
1085 | ||
1086 | test_expect_success 'git notes copy --for-rewrite (ignore)' ' | |
1087 | git config notes.rewriteMode ignore && | |
1088 | echo $(git rev-parse HEAD^) $(git rev-parse HEAD) | | |
1089 | git notes copy --for-rewrite=foo && | |
1090 | git log -1 > output && | |
1091 | test_cmp expect output | |
1092 | ' | |
1093 | ||
1094 | cat > expect << EOF | |
1095 | commit 37a0d4cba38afef96ba54a3ea567e6dac575700b | |
1096 | Author: A U Thor <author@example.com> | |
1097 | Date: Thu Apr 7 15:27:13 2005 -0700 | |
1098 | ||
1099 | 15th | |
1100 | ||
1101 | Notes (other): | |
1102 | a fresh note | |
d4990c4b | 1103 | $whitespace |
6956f858 TR |
1104 | another fresh note |
1105 | EOF | |
1106 | ||
1107 | test_expect_success 'git notes copy --for-rewrite (append)' ' | |
1108 | git notes add -f -m"another fresh note" HEAD^ && | |
1109 | git config notes.rewriteMode concatenate && | |
1110 | echo $(git rev-parse HEAD^) $(git rev-parse HEAD) | | |
1111 | git notes copy --for-rewrite=foo && | |
1112 | git log -1 > output && | |
1113 | test_cmp expect output | |
1114 | ' | |
1115 | ||
1116 | cat > expect << EOF | |
1117 | commit 37a0d4cba38afef96ba54a3ea567e6dac575700b | |
1118 | Author: A U Thor <author@example.com> | |
1119 | Date: Thu Apr 7 15:27:13 2005 -0700 | |
1120 | ||
1121 | 15th | |
1122 | ||
1123 | Notes (other): | |
1124 | a fresh note | |
d4990c4b | 1125 | $whitespace |
6956f858 | 1126 | another fresh note |
d4990c4b | 1127 | $whitespace |
6956f858 | 1128 | append 1 |
d4990c4b | 1129 | $whitespace |
6956f858 TR |
1130 | append 2 |
1131 | EOF | |
1132 | ||
1133 | test_expect_success 'git notes copy --for-rewrite (append two to one)' ' | |
1134 | git notes add -f -m"append 1" HEAD^ && | |
1135 | git notes add -f -m"append 2" HEAD^^ && | |
1136 | (echo $(git rev-parse HEAD^) $(git rev-parse HEAD); | |
1137 | echo $(git rev-parse HEAD^^) $(git rev-parse HEAD)) | | |
1138 | git notes copy --for-rewrite=foo && | |
1139 | git log -1 > output && | |
1140 | test_cmp expect output | |
1141 | ' | |
1142 | ||
1143 | test_expect_success 'git notes copy --for-rewrite (append empty)' ' | |
1144 | git notes remove HEAD^ && | |
1145 | echo $(git rev-parse HEAD^) $(git rev-parse HEAD) | | |
1146 | git notes copy --for-rewrite=foo && | |
1147 | git log -1 > output && | |
1148 | test_cmp expect output | |
1149 | ' | |
1150 | ||
1151 | cat > expect << EOF | |
1152 | commit 37a0d4cba38afef96ba54a3ea567e6dac575700b | |
1153 | Author: A U Thor <author@example.com> | |
1154 | Date: Thu Apr 7 15:27:13 2005 -0700 | |
1155 | ||
1156 | 15th | |
1157 | ||
1158 | Notes (other): | |
1159 | replacement note 1 | |
1160 | EOF | |
1161 | ||
1162 | test_expect_success 'GIT_NOTES_REWRITE_MODE works' ' | |
1163 | git notes add -f -m"replacement note 1" HEAD^ && | |
1164 | echo $(git rev-parse HEAD^) $(git rev-parse HEAD) | | |
1165 | GIT_NOTES_REWRITE_MODE=overwrite git notes copy --for-rewrite=foo && | |
1166 | git log -1 > output && | |
1167 | test_cmp expect output | |
1168 | ' | |
1169 | ||
1170 | cat > expect << EOF | |
1171 | commit 37a0d4cba38afef96ba54a3ea567e6dac575700b | |
1172 | Author: A U Thor <author@example.com> | |
1173 | Date: Thu Apr 7 15:27:13 2005 -0700 | |
1174 | ||
1175 | 15th | |
1176 | ||
1177 | Notes (other): | |
1178 | replacement note 2 | |
1179 | EOF | |
1180 | ||
1181 | test_expect_success 'GIT_NOTES_REWRITE_REF works' ' | |
1182 | git config notes.rewriteMode overwrite && | |
1183 | git notes add -f -m"replacement note 2" HEAD^ && | |
1184 | git config --unset-all notes.rewriteRef && | |
1185 | echo $(git rev-parse HEAD^) $(git rev-parse HEAD) | | |
1186 | GIT_NOTES_REWRITE_REF=refs/notes/commits:refs/notes/other \ | |
1187 | git notes copy --for-rewrite=foo && | |
1188 | git log -1 > output && | |
1189 | test_cmp expect output | |
1190 | ' | |
1191 | ||
1192 | test_expect_success 'GIT_NOTES_REWRITE_REF overrides config' ' | |
1193 | git config notes.rewriteRef refs/notes/other && | |
1194 | git notes add -f -m"replacement note 3" HEAD^ && | |
1195 | echo $(git rev-parse HEAD^) $(git rev-parse HEAD) | | |
1196 | GIT_NOTES_REWRITE_REF= git notes copy --for-rewrite=foo && | |
1197 | git log -1 > output && | |
1198 | test_cmp expect output | |
1199 | ' | |
bbb1b8a3 JK |
1200 | |
1201 | test_expect_success 'git notes copy diagnoses too many or too few parameters' ' | |
1202 | test_must_fail git notes copy && | |
1203 | test_must_fail git notes copy one two three | |
1204 | ' | |
1205 | ||
618cd757 JH |
1206 | test_expect_success 'git notes get-ref (no overrides)' ' |
1207 | git config --unset core.notesRef && | |
ed40ec55 | 1208 | sane_unset GIT_NOTES_REF && |
618cd757 JH |
1209 | test "$(git notes get-ref)" = "refs/notes/commits" |
1210 | ' | |
1211 | ||
1212 | test_expect_success 'git notes get-ref (core.notesRef)' ' | |
1213 | git config core.notesRef refs/notes/foo && | |
1214 | test "$(git notes get-ref)" = "refs/notes/foo" | |
1215 | ' | |
1216 | ||
1217 | test_expect_success 'git notes get-ref (GIT_NOTES_REF)' ' | |
1218 | test "$(GIT_NOTES_REF=refs/notes/bar git notes get-ref)" = "refs/notes/bar" | |
1219 | ' | |
1220 | ||
1221 | test_expect_success 'git notes get-ref (--ref)' ' | |
1222 | test "$(GIT_NOTES_REF=refs/notes/bar git notes --ref=baz get-ref)" = "refs/notes/baz" | |
1223 | ' | |
1224 | ||
65d9fb48 | 1225 | test_done |