| line |
true |
false |
branch |
|
26
|
4 |
150 |
|| filemode == GIT_FILEMODE_BLOB |
|
27
|
2 |
2 |
|| filemode == GIT_FILEMODE_BLOB_EXECUTABLE |
|
28
|
1 |
1 |
|| filemode == GIT_FILEMODE_LINK |
|
29
|
154 |
44 |
|| filemode == GIT_FILEMODE_COMMIT); |
|
|
0 |
1 |
|| filemode == GIT_FILEMODE_COMMIT); |
|
35
|
161 |
348 |
if (GIT_MODE_TYPE(filemode) == GIT_FILEMODE_TREE) |
|
39
|
3 |
345 |
if (GIT_PERMS_IS_EXEC(filemode)) |
|
43
|
0 |
345 |
if (GIT_MODE_TYPE(filemode) == GIT_FILEMODE_COMMIT) |
|
47
|
3 |
342 |
if (GIT_MODE_TYPE(filemode) == GIT_FILEMODE_LINK) |
|
86
|
0 |
246 |
TREE_ENTRY_CHECK_NAMELEN(filename_len); |
|
88
|
0 |
246 |
if (GIT_ADD_SIZET_OVERFLOW(&tree_len, sizeof(git_tree_entry), filename_len) || |
|
94
|
0 |
246 |
if (!entry) |
|
165
|
0 |
38 |
TREE_ENTRY_CHECK_NAMELEN(filename_len); |
|
173
|
4 |
34 |
if (git_array_search(&homing, |
|
179
|
34 |
0 |
for (i = homing; i < tree->entries.size; ++i) { |
|
180
|
34 |
0 |
entry = git_array_get(tree->entries, i); |
|
182
|
0 |
34 |
if (homing_search_cmp(&ksearch, entry) < 0) |
|
185
|
34 |
0 |
if (entry->filename_len == filename_len && |
|
|
34 |
0 |
if (entry->filename_len == filename_len && |
|
187
|
34 |
0 |
if (at_pos) |
|
196
|
0 |
0 |
if (homing > 0) { |
|
200
|
0 |
0 |
entry = git_array_get(tree->entries, i); |
|
202
|
0 |
0 |
if (homing_search_cmp(&ksearch, entry) > 0) |
|
205
|
0 |
0 |
if (entry->filename_len == filename_len && |
|
|
0 |
0 |
if (entry->filename_len == filename_len && |
|
207
|
0 |
0 |
if (at_pos) |
|
212
|
0 |
0 |
} while (i-- > 0); |
|
221
|
2159 |
246 |
if (entry == NULL) |
|
231
|
0 |
45 |
assert(source); |
|
234
|
0 |
45 |
if (cpy == NULL) |
|
264
|
0 |
166 |
assert(entry); |
|
270
|
0 |
135 |
assert(entry); |
|
276
|
0 |
43 |
assert(entry); |
|
278
|
0 |
43 |
if (S_ISGITLINK(entry->attr)) |
|
280
|
9 |
34 |
else if (S_ISDIR(entry->attr)) |
|
291
|
39 |
0 |
assert(entry && object_out); |
|
|
0 |
39 |
assert(entry && object_out); |
|
300
|
4 |
34 |
if (tree_key_search(&idx, tree, name, name_len) < 0) |
|
303
|
34 |
0 |
return git_array_get(tree->entries, idx); |
|
309
|
2 |
0 |
assert(tree && filename); |
|
|
0 |
2 |
assert(tree && filename); |
|
317
|
0 |
561 |
assert(tree); |
|
318
|
561 |
0 |
return git_array_get(tree->entries, idx); |
|
327
|
0 |
0 |
assert(tree); |
|
329
|
0 |
0 |
git_array_foreach(tree->entries, i, e) { |
|
|
0 |
0 |
git_array_foreach(tree->entries, i, e) { |
|
330
|
0 |
0 |
if (memcmp(&e->oid->id, &id->id, sizeof(id->id)) == 0) |
|
339
|
0 |
214 |
assert(tree); |
|
345
|
0 |
6 |
assert(bld); |
|
352
|
3 |
0 |
if (path) |
|
364
|
210 |
0 |
if (!buffer_len || git__isspace(*buffer)) |
|
|
0 |
210 |
if (!buffer_len || git__isspace(*buffer)) |
|
367
|
0 |
210 |
if ((error = git__strntol32(&mode, buffer, buffer_len, buffer_out, 8)) < 0) |
|
370
|
210 |
0 |
if (mode < 0 || mode > UINT16_MAX) |
|
|
0 |
210 |
if (mode < 0 || mode > UINT16_MAX) |
|
389
|
0 |
101 |
GIT_ERROR_CHECK_ARRAY(tree->entries); |
|
391
|
210 |
101 |
while (buffer < buffer_end) { |
|
397
|
210 |
0 |
if (parse_mode(&attr, buffer, buffer_end - buffer, &buffer) < 0 || !buffer) |
|
|
0 |
210 |
if (parse_mode(&attr, buffer, buffer_end - buffer, &buffer) < 0 || !buffer) |
|
400
|
210 |
0 |
if (buffer >= buffer_end || (*buffer++) != ' ') |
|
|
0 |
210 |
if (buffer >= buffer_end || (*buffer++) != ' ') |
|
403
|
0 |
210 |
if ((nul = memchr(buffer, 0, buffer_end - buffer)) == NULL) |
|
406
|
210 |
0 |
if ((filename_len = nul - buffer) == 0 || filename_len > UINT16_MAX) |
|
|
0 |
210 |
if ((filename_len = nul - buffer) == 0 || filename_len > UINT16_MAX) |
|
409
|
0 |
210 |
if ((buffer_end - (nul + 1)) < GIT_OID_RAWSZ) |
|
414
|
0 |
210 |
entry = git_array_alloc(tree->entries); |
|
|
210 |
0 |
entry = git_array_alloc(tree->entries); |
|
415
|
0 |
210 |
GIT_ERROR_CHECK_ALLOC(entry); |
|
434
|
0 |
101 |
if ((git_tree__parse_raw(tree, |
|
439
|
0 |
101 |
if (git_odb_object_dup(&tree->odb_obj, odb_obj) < 0) |
|
450
|
13 |
9 |
for (i = start; i < entries; ++i) { |
|
452
|
13 |
0 |
if (strlen(entry->path) < dirlen || |
|
|
11 |
2 |
if (strlen(entry->path) < dirlen || |
|
453
|
11 |
0 |
memcmp(entry->path, dirname, dirlen) || |
|
454
|
11 |
0 |
(dirlen > 0 && entry->path[dirlen] != '/')) { |
|
476
|
1 |
197 |
if (!valid_filemode(filemode)) |
|
479
|
1 |
196 |
if (!valid_entry_name(repo, filename)) |
|
482
|
0 |
196 |
if (git_oid_is_zero(id)) |
|
502
|
189 |
6 |
if (validate && ((error = check_entry(bld->repo, filename, id, filemode)) < 0)) |
|
|
0 |
189 |
if (validate && ((error = check_entry(bld->repo, filename, id, filemode)) < 0)) |
|
506
|
0 |
195 |
GIT_ERROR_CHECK_ALLOC(entry); |
|
510
|
0 |
195 |
if ((error = git_strmap_set(bld->map, entry->filename, entry)) < 0) { |
|
534
|
11 |
87 |
if (cache != NULL && cache->entry_count >= 0){ |
|
|
11 |
0 |
if (cache != NULL && cache->entry_count >= 0){ |
|
539
|
87 |
0 |
if ((error = git_treebuilder_new(&bld, repo, NULL)) < 0 || bld == NULL) |
|
|
0 |
87 |
if ((error = git_treebuilder_new(&bld, repo, NULL)) < 0 || bld == NULL) |
|
547
|
200 |
76 |
for (i = start; i < entries; ++i) { |
|
559
|
194 |
6 |
if (strlen(entry->path) < dirname_len || |
|
|
189 |
5 |
if (strlen(entry->path) < dirname_len || |
|
560
|
35 |
154 |
memcmp(entry->path, dirname, dirname_len) || |
|
561
|
35 |
0 |
(dirname_len > 0 && entry->path[dirname_len] != '/')) { |
|
566
|
35 |
154 |
if (*filename == '/') |
|
569
|
43 |
146 |
if (next_slash) { |
|
575
|
0 |
43 |
GIT_ERROR_CHECK_ALLOC(subdir); |
|
579
|
0 |
43 |
if (written < 0) { |
|
593
|
22 |
21 |
if (last_comp) { |
|
601
|
0 |
43 |
if (error < 0) |
|
605
|
0 |
146 |
if (error < 0) |
|
610
|
0 |
87 |
if (git_treebuilder_write_with_buffer(oid, bld, shared_buf) < 0) |
|
629
|
56 |
0 |
assert(oid && index && repo); |
|
|
56 |
0 |
assert(oid && index && repo); |
|
|
0 |
56 |
assert(oid && index && repo); |
|
631
|
0 |
56 |
if (git_index_has_conflicts(index)) { |
|
637
|
44 |
12 |
if (index->tree != NULL && index->tree->entry_count >= 0) { |
|
|
1 |
43 |
if (index->tree != NULL && index->tree->entry_count >= 0) { |
|
647
|
0 |
55 |
if (index->ignore_case) { |
|
655
|
0 |
55 |
if (old_ignore_case) |
|
660
|
0 |
55 |
if (ret < 0) |
|
665
|
0 |
55 |
if ((ret = git_tree_lookup(&tree, repo, oid)) < 0) |
|
683
|
94 |
0 |
assert(builder_p && repo); |
|
|
0 |
94 |
assert(builder_p && repo); |
|
686
|
0 |
94 |
GIT_ERROR_CHECK_ALLOC(bld); |
|
690
|
0 |
94 |
if (git_strmap_new(&bld->map) < 0) { |
|
695
|
4 |
90 |
if (source != NULL) { |
|
698
|
6 |
4 |
git_array_foreach(source->entries, i, entry_src) { |
|
|
6 |
0 |
git_array_foreach(source->entries, i, entry_src) { |
|
699
|
0 |
6 |
if (append_entry( |
|
726
|
9 |
0 |
assert(bld && id && filename); |
|
|
9 |
0 |
assert(bld && id && filename); |
|
|
0 |
9 |
assert(bld && id && filename); |
|
728
|
2 |
7 |
if ((error = check_entry(bld->repo, filename, id, filemode)) < 0) |
|
731
|
1 |
6 |
if ((entry = git_strmap_get(bld->map, filename)) != NULL) { |
|
735
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC(entry); |
|
737
|
0 |
6 |
if ((error = git_strmap_set(bld->map, entry->filename, entry)) < 0) { |
|
746
|
4 |
3 |
if (entry_out) |
|
754
|
8 |
0 |
assert(bld && filename); |
|
|
0 |
8 |
assert(bld && filename); |
|
767
|
1 |
3 |
if (entry == NULL) |
|
795
|
0 |
95 |
assert(bld); |
|
796
|
0 |
95 |
assert(tree); |
|
801
|
0 |
95 |
if ((error = git_vector_init(&entries, entrycount, entry_sort_cmp)) < 0) |
|
804
|
63 |
32 |
if (tree->asize == 0 && |
|
|
0 |
63 |
if (tree->asize == 0 && |
|
808
|
0 |
200 |
git_strmap_foreach_value(bld->map, entry, { |
|
|
200 |
95 |
git_strmap_foreach_value(bld->map, entry, { |
|
815
|
200 |
95 |
for (i = 0; i < entries.length && !error; ++i) { |
|
|
200 |
0 |
for (i = 0; i < entries.length && !error; ++i) { |
|
822
|
0 |
200 |
if (git_buf_oom(tree)) { |
|
828
|
95 |
0 |
if ((error = git_repository_odb__weakptr(&odb, bld->repo)) == 0) |
|
845
|
0 |
0 |
assert(bld && filter); |
|
|
0 |
0 |
assert(bld && filter); |
|
847
|
0 |
0 |
git_strmap_foreach(bld->map, filename, entry, { |
|
|
0 |
0 |
git_strmap_foreach(bld->map, filename, entry, { |
|
861
|
0 |
95 |
assert(bld); |
|
863
|
198 |
95 |
git_strmap_foreach_value(bld->map, e, git_tree_entry_free(e)); |
|
871
|
0 |
94 |
if (bld == NULL) |
|
882
|
16 |
20 |
if (slash_pos == NULL) |
|
902
|
0 |
36 |
if (filename_len == 0) { |
|
909
|
3 |
33 |
if (entry == NULL) { |
|
919
|
0 |
20 |
if (!git_tree_entry__is_tree(entry)) { |
|
928
|
20 |
0 |
if (path[filename_len + 1] != '\0') |
|
937
|
0 |
20 |
if (git_tree_lookup(&subtree, root->object.repo, entry->oid) < 0) |
|
961
|
24 |
13 |
git_array_foreach(tree->entries, i, entry) { |
|
|
24 |
0 |
git_array_foreach(tree->entries, i, entry) { |
|
962
|
11 |
13 |
if (preorder) { |
|
964
|
0 |
11 |
if (error < 0) { /* negative value stops iteration */ |
|
968
|
0 |
11 |
if (error > 0) { /* positive value skips this entry */ |
|
974
|
4 |
20 |
if (git_tree_entry__is_tree(entry)) { |
|
979
|
0 |
4 |
if (error < 0) |
|
986
|
0 |
4 |
if (git_buf_oom(path)) |
|
992
|
0 |
4 |
if (error != 0) |
|
998
|
13 |
11 |
if (!preorder) { |
|
1000
|
0 |
13 |
if (error < 0) { /* negative value stops iteration */ |
|
1020
|
4 |
5 |
if (mode != GIT_TREEWALK_POST && mode != GIT_TREEWALK_PRE) { |
|
|
0 |
4 |
if (mode != GIT_TREEWALK_POST && mode != GIT_TREEWALK_PRE) { |
|
1066
|
0 |
0 |
while ((slash = strchr(path, '/')) != NULL) { |
|
1080
|
0 |
0 |
if (slash) |
|
1094
|
0 |
0 |
if (git_treebuilder_entrycount(popped->bld) == 0) { |
|
1104
|
0 |
0 |
if (error < 0) { |
|
1114
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(component->ptr); |
|
1117
|
0 |
0 |
if (current->tree) { |
|
1120
|
0 |
0 |
if (to_replace && git_tree_entry_type(to_replace) != GIT_OBJECT_TREE) { |
|
|
0 |
0 |
if (to_replace && git_tree_entry_type(to_replace) != GIT_OBJECT_TREE) { |
|
1138
|
0 |
0 |
if ((error = git_vector_init(&entries, nupdates, compare_entries)) < 0) |
|
1142
|
0 |
0 |
for (i = 0 ; i < nupdates; i++) { |
|
1143
|
0 |
0 |
if ((error = git_vector_insert_sorted(&entries, (void *) &updates[i], on_dup_entry)) < 0) |
|
1147
|
0 |
0 |
root_elem = git_array_alloc(stack); |
|
|
0 |
0 |
root_elem = git_array_alloc(stack); |
|
1148
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(root_elem); |
|
1151
|
0 |
0 |
if (baseline && (error = git_tree_dup(&root_elem->tree, baseline)) < 0) |
|
|
0 |
0 |
if (baseline && (error = git_tree_dup(&root_elem->tree, baseline)) < 0) |
|
1154
|
0 |
0 |
if ((error = git_treebuilder_new(&root_elem->bld, repo, root_elem->tree)) < 0) |
|
1157
|
0 |
0 |
for (i = 0; i < nupdates; i++) { |
|
1158
|
0 |
0 |
const git_tree_update *last_update = i == 0 ? NULL : git_vector_get(&entries, i-1); |
|
1164
|
0 |
0 |
if (last_update) |
|
1173
|
0 |
0 |
steps_up = last_update == NULL ? 0 : count_slashes(&last_update->path[common_prefix]); |
|
1175
|
0 |
0 |
for (j = 0; j < steps_up; j++) { |
|
1176
|
0 |
0 |
tree_stack_entry *current, *popped = git_array_pop(stack); |
|
1177
|
0 |
0 |
assert(popped); |
|
1179
|
0 |
0 |
current = git_array_last(stack); |
|
1180
|
0 |
0 |
assert(current); |
|
1182
|
0 |
0 |
if ((error = create_popped_tree(current, popped, &component)) < 0) |
|
1188
|
0 |
0 |
while (next_component(&component, path)) { |
|
1192
|
0 |
0 |
last = git_array_last(stack); |
|
1193
|
0 |
0 |
entry = last->tree ? git_tree_entry_byname(last->tree, component.ptr) : NULL; |
|
1194
|
0 |
0 |
if (!entry) |
|
1197
|
0 |
0 |
if (entry && git_tree_entry_type(entry) != GIT_OBJECT_TREE) { |
|
|
0 |
0 |
if (entry && git_tree_entry_type(entry) != GIT_OBJECT_TREE) { |
|
1203
|
0 |
0 |
new_entry = git_array_alloc(stack); |
|
|
0 |
0 |
new_entry = git_array_alloc(stack); |
|
1204
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(new_entry); |
|
1208
|
0 |
0 |
if (entry && (error = git_tree_lookup(&new_entry->tree, repo, git_tree_entry_id(entry))) < 0) |
|
|
0 |
0 |
if (entry && (error = git_tree_lookup(&new_entry->tree, repo, git_tree_entry_id(entry))) < 0) |
|
1211
|
0 |
0 |
if ((error = git_treebuilder_new(&new_entry->bld, repo, new_entry->tree)) < 0) |
|
1215
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(new_entry->name); |
|
1226
|
0 |
0 |
tree_stack_entry *last = git_array_last(stack); |
|
1229
|
0 |
0 |
if (e && git_tree_entry_type(e) != git_object__type_from_filemode(update->filemode)) { |
|
|
0 |
0 |
if (e && git_tree_entry_type(e) != git_object__type_from_filemode(update->filemode)) { |
|
1246
|
0 |
0 |
error = git_treebuilder_remove(git_array_last(stack)->bld, basename); |
|
1256
|
0 |
0 |
if (error < 0) |
|
1263
|
0 |
0 |
while ((popped = git_array_pop(stack)) != NULL) { |
|
|
0 |
0 |
while ((popped = git_array_pop(stack)) != NULL) { |
|
1264
|
0 |
0 |
current = git_array_last(stack); |
|
1266
|
0 |
0 |
if (!current) |
|
1269
|
0 |
0 |
if ((error = create_popped_tree(current, popped, &component)) < 0) |
|
1279
|
0 |
0 |
if (error < 0) |
|
1286
|
0 |
0 |
while ((e = git_array_pop(stack)) != NULL) { |
|
|
0 |
0 |
while ((e = git_array_pop(stack)) != NULL) { |