3 test_description
='Test notes trees that also contain non-notes'
12 commit refs/notes/commits
13 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
18 from refs/notes/commits^0
25 git log |
grep "^ " > output
&&
26 i
=$number_of_commits &&
27 while [ $i -gt 0 ]; do
29 echo " note for commit #$i" &&
32 test_cmp expect output
35 test_expect_success
"setup: create a couple of commits" '
38 cat <<INPUT_END >input &&
39 commit refs/heads/master
40 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
53 cat <<INPUT_END >>input &&
54 commit refs/heads/master
55 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
66 git fast-import --quiet <input
69 test_expect_success
"create a notes tree with both notes and non-notes" '
71 commit1=$(git rev-parse refs/heads/master^) &&
72 commit2=$(git rev-parse refs/heads/master) &&
74 cat <<INPUT_END >input &&
75 commit refs/notes/commits
76 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
93 cat <<INPUT_END >>input &&
94 commit refs/notes/commits
95 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
100 M 644 inline foobar/non-note.txt
102 A non-note in a notes tree
107 edited note for commit #2
112 cat <<INPUT_END >>input &&
113 commit refs/notes/commits
114 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
121 edited note for commit #1
124 M 644 inline deadbeef
126 non-note with SHA1-like name
129 M 644 inline de/adbeef
131 another non-note with SHA1-like name
134 M 644 inline de/adbeefdeadbeefdeadbeefdeadbeefdeadbeef
136 This is actually a valid note, albeit to a non-existing object.
137 It is needed in order to trigger the "mishandling" of the dead/beef non-note.
140 M 644 inline dead/beef
142 yet another non-note with SHA1-like name
146 git fast-import --quiet <input &&
147 git config core.notesRef refs/notes/commits
150 cat >expect
<<EXPECT_END
152 edited note for commit #2
154 edited note for commit #1
157 test_expect_success
"verify contents of notes" '
159 git log | grep "^ " > actual &&
160 test_cmp expect actual
163 cat >expect_nn1
<<EXPECT_END
164 A non-note in a notes tree
166 cat >expect_nn2
<<EXPECT_END
167 non-note with SHA1-like name
169 cat >expect_nn3
<<EXPECT_END
170 another non-note with SHA1-like name
172 cat >expect_nn4
<<EXPECT_END
173 yet another non-note with SHA1-like name
176 test_expect_success
"verify contents of non-notes" '
178 git cat-file -p refs/notes/commits:foobar/non-note.txt > actual_nn1 &&
179 test_cmp expect_nn1 actual_nn1 &&
180 git cat-file -p refs/notes/commits:deadbeef > actual_nn2 &&
181 test_cmp expect_nn2 actual_nn2 &&
182 git cat-file -p refs/notes/commits:de/adbeef > actual_nn3 &&
183 test_cmp expect_nn3 actual_nn3 &&
184 git cat-file -p refs/notes/commits:dead/beef > actual_nn4 &&
185 test_cmp expect_nn4 actual_nn4
188 test_expect_success
"git-notes preserves non-notes" '
191 git notes edit -m "foo bar"
194 test_expect_success
"verify contents of non-notes after git-notes" '
196 git cat-file -p refs/notes/commits:foobar/non-note.txt > actual_nn1 &&
197 test_cmp expect_nn1 actual_nn1 &&
198 git cat-file -p refs/notes/commits:deadbeef > actual_nn2 &&
199 test_cmp expect_nn2 actual_nn2 &&
200 git cat-file -p refs/notes/commits:de/adbeef > actual_nn3 &&
201 test_cmp expect_nn3 actual_nn3 &&
202 git cat-file -p refs/notes/commits:dead/beef > actual_nn4 &&
203 test_cmp expect_nn4 actual_nn4