line |
true |
false |
branch |
27
|
4 |
150 |
|| filemode == GIT_FILEMODE_BLOB |
28
|
2 |
2 |
|| filemode == GIT_FILEMODE_BLOB_EXECUTABLE |
29
|
1 |
1 |
|| filemode == GIT_FILEMODE_LINK |
30
|
154 |
44 |
|| filemode == GIT_FILEMODE_COMMIT); |
|
0 |
1 |
|| filemode == GIT_FILEMODE_COMMIT); |
36
|
161 |
348 |
if (GIT_MODE_TYPE(filemode) == GIT_FILEMODE_TREE) |
40
|
3 |
345 |
if (GIT_PERMS_IS_EXEC(filemode)) |
44
|
0 |
345 |
if (GIT_MODE_TYPE(filemode) == GIT_FILEMODE_COMMIT) |
48
|
3 |
342 |
if (GIT_MODE_TYPE(filemode) == GIT_FILEMODE_LINK) |
88
|
0 |
246 |
TREE_ENTRY_CHECK_NAMELEN(filename_len); |
90
|
0 |
246 |
if (GIT_ADD_SIZET_OVERFLOW(&tree_len, sizeof(git_tree_entry), filename_len) || |
96
|
0 |
246 |
if (!entry) |
159
|
0 |
38 |
TREE_ENTRY_CHECK_NAMELEN(filename_len); |
167
|
4 |
34 |
if (git_array_search(&homing, |
173
|
34 |
0 |
for (i = homing; i < tree->entries.size; ++i) { |
174
|
34 |
0 |
entry = git_array_get(tree->entries, i); |
176
|
0 |
34 |
if (homing_search_cmp(&ksearch, entry) < 0) |
179
|
34 |
0 |
if (entry->filename_len == filename_len && |
|
34 |
0 |
if (entry->filename_len == filename_len && |
181
|
34 |
0 |
if (at_pos) |
190
|
0 |
0 |
if (homing > 0) { |
194
|
0 |
0 |
entry = git_array_get(tree->entries, i); |
196
|
0 |
0 |
if (homing_search_cmp(&ksearch, entry) > 0) |
199
|
0 |
0 |
if (entry->filename_len == filename_len && |
|
0 |
0 |
if (entry->filename_len == filename_len && |
201
|
0 |
0 |
if (at_pos) |
206
|
0 |
0 |
} while (i-- > 0); |
215
|
2427 |
246 |
if (entry == NULL) |
225
|
0 |
45 |
GIT_ASSERT_ARG(source); |
228
|
0 |
45 |
if (cpy == NULL) |
258
|
0 |
166 |
GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL); |
264
|
0 |
135 |
GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL); |
270
|
0 |
43 |
GIT_ASSERT_ARG_WITH_RETVAL(entry, GIT_OBJECT_INVALID); |
272
|
0 |
43 |
if (S_ISGITLINK(entry->attr)) |
274
|
9 |
34 |
else if (S_ISDIR(entry->attr)) |
285
|
0 |
39 |
GIT_ASSERT_ARG(entry); |
286
|
0 |
39 |
GIT_ASSERT_ARG(object_out); |
296
|
4 |
34 |
if (tree_key_search(&idx, tree, name, name_len) < 0) |
299
|
34 |
0 |
return git_array_get(tree->entries, idx); |
305
|
0 |
2 |
GIT_ASSERT_ARG_WITH_RETVAL(tree, NULL); |
306
|
0 |
2 |
GIT_ASSERT_ARG_WITH_RETVAL(filename, NULL); |
314
|
0 |
561 |
GIT_ASSERT_ARG_WITH_RETVAL(tree, NULL); |
315
|
561 |
0 |
return git_array_get(tree->entries, idx); |
324
|
0 |
0 |
GIT_ASSERT_ARG_WITH_RETVAL(tree, NULL); |
326
|
0 |
0 |
git_array_foreach(tree->entries, i, e) { |
|
0 |
0 |
git_array_foreach(tree->entries, i, e) { |
327
|
0 |
0 |
if (git_oid_equal(&e->oid, id)) |
336
|
0 |
214 |
GIT_ASSERT_ARG_WITH_RETVAL(tree, 0); |
342
|
0 |
6 |
GIT_ASSERT_ARG_WITH_RETVAL(bld, 0); |
349
|
3 |
0 |
if (path) |
372
|
210 |
0 |
if (!buffer_len || git__isspace(*buffer)) |
|
0 |
210 |
if (!buffer_len || git__isspace(*buffer)) |
375
|
0 |
210 |
if ((error = git__strntol32(&mode, buffer, buffer_len, buffer_out, 8)) < 0) |
378
|
210 |
0 |
if (mode < 0 || mode > UINT16_MAX) |
|
0 |
210 |
if (mode < 0 || mode > UINT16_MAX) |
397
|
0 |
101 |
GIT_ERROR_CHECK_ARRAY(tree->entries); |
399
|
210 |
101 |
while (buffer < buffer_end) { |
405
|
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) |
408
|
210 |
0 |
if (buffer >= buffer_end || (*buffer++) != ' ') |
|
0 |
210 |
if (buffer >= buffer_end || (*buffer++) != ' ') |
411
|
0 |
210 |
if ((nul = memchr(buffer, 0, buffer_end - buffer)) == NULL) |
414
|
210 |
0 |
if ((filename_len = nul - buffer) == 0 || filename_len > UINT16_MAX) |
|
0 |
210 |
if ((filename_len = nul - buffer) == 0 || filename_len > UINT16_MAX) |
417
|
0 |
210 |
if ((buffer_end - (nul + 1)) < GIT_OID_RAWSZ) |
422
|
0 |
210 |
entry = git_array_alloc(tree->entries); |
|
0 |
0 |
entry = git_array_alloc(tree->entries); |
423
|
0 |
210 |
GIT_ERROR_CHECK_ALLOC(entry); |
445
|
101 |
0 |
if ((error = git_tree__parse_raw(tree, data, size)) < 0 || |
|
0 |
101 |
if ((error = git_tree__parse_raw(tree, data, size)) < 0 || |
457
|
13 |
9 |
for (i = start; i < entries; ++i) { |
459
|
13 |
0 |
if (strlen(entry->path) < dirlen || |
|
11 |
2 |
if (strlen(entry->path) < dirlen || |
460
|
11 |
0 |
memcmp(entry->path, dirname, dirlen) || |
461
|
11 |
0 |
(dirlen > 0 && entry->path[dirlen] != '/')) { |
483
|
1 |
197 |
if (!valid_filemode(filemode)) |
486
|
1 |
196 |
if (!valid_entry_name(repo, filename)) |
489
|
0 |
196 |
if (git_oid_is_zero(id)) |
513
|
0 |
95 |
if ((error = git_vector_init(&entries, entrycount, entry_sort_cmp)) < 0) |
516
|
62 |
33 |
if (buf->asize == 0 && |
|
0 |
62 |
if (buf->asize == 0 && |
520
|
0 |
200 |
git_strmap_foreach_value(bld->map, entry, { |
|
200 |
95 |
git_strmap_foreach_value(bld->map, entry, { |
527
|
200 |
95 |
for (i = 0; i < entries.length && !error; ++i) { |
|
200 |
0 |
for (i = 0; i < entries.length && !error; ++i) { |
534
|
0 |
200 |
if (git_str_oom(buf)) { |
540
|
95 |
0 |
if ((error = git_repository_odb__weakptr(&odb, bld->repo)) == 0) |
559
|
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)) |
563
|
0 |
195 |
GIT_ERROR_CHECK_ALLOC(entry); |
567
|
0 |
195 |
if ((error = git_strmap_set(bld->map, entry->filename, entry)) < 0) { |
591
|
11 |
87 |
if (cache != NULL && cache->entry_count >= 0){ |
|
11 |
0 |
if (cache != NULL && cache->entry_count >= 0){ |
596
|
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) |
604
|
200 |
76 |
for (i = start; i < entries; ++i) { |
616
|
194 |
6 |
if (strlen(entry->path) < dirname_len || |
|
189 |
5 |
if (strlen(entry->path) < dirname_len || |
617
|
35 |
154 |
memcmp(entry->path, dirname, dirname_len) || |
618
|
35 |
0 |
(dirname_len > 0 && entry->path[dirname_len] != '/')) { |
623
|
35 |
154 |
if (*filename == '/') |
626
|
43 |
146 |
if (next_slash) { |
632
|
0 |
43 |
GIT_ERROR_CHECK_ALLOC(subdir); |
636
|
0 |
43 |
if (written < 0) { |
650
|
22 |
21 |
if (last_comp) { |
658
|
0 |
43 |
if (error < 0) |
662
|
0 |
146 |
if (error < 0) |
667
|
0 |
87 |
if (git_treebuilder__write_with_buffer(oid, bld, shared_buf) < 0) |
686
|
0 |
56 |
GIT_ASSERT_ARG(oid); |
687
|
0 |
56 |
GIT_ASSERT_ARG(index); |
688
|
0 |
56 |
GIT_ASSERT_ARG(repo); |
690
|
0 |
56 |
if (git_index_has_conflicts(index)) { |
696
|
44 |
12 |
if (index->tree != NULL && index->tree->entry_count >= 0) { |
|
1 |
43 |
if (index->tree != NULL && index->tree->entry_count >= 0) { |
706
|
0 |
55 |
if (index->ignore_case) { |
714
|
0 |
55 |
if (old_ignore_case) |
719
|
0 |
55 |
if (ret < 0) |
724
|
0 |
55 |
if ((ret = git_tree_lookup(&tree, repo, oid)) < 0) |
742
|
0 |
94 |
GIT_ASSERT_ARG(builder_p); |
743
|
0 |
94 |
GIT_ASSERT_ARG(repo); |
746
|
0 |
94 |
GIT_ERROR_CHECK_ALLOC(bld); |
750
|
0 |
94 |
if (git_strmap_new(&bld->map) < 0) { |
755
|
4 |
90 |
if (source != NULL) { |
758
|
6 |
4 |
git_array_foreach(source->entries, i, entry_src) { |
|
6 |
0 |
git_array_foreach(source->entries, i, entry_src) { |
759
|
0 |
6 |
if (append_entry( |
786
|
0 |
9 |
GIT_ASSERT_ARG(bld); |
787
|
0 |
9 |
GIT_ASSERT_ARG(id); |
788
|
0 |
9 |
GIT_ASSERT_ARG(filename); |
790
|
2 |
7 |
if ((error = check_entry(bld->repo, filename, id, filemode)) < 0) |
793
|
1 |
6 |
if ((entry = git_strmap_get(bld->map, filename)) != NULL) { |
797
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC(entry); |
799
|
0 |
6 |
if ((error = git_strmap_set(bld->map, entry->filename, entry)) < 0) { |
808
|
4 |
3 |
if (entry_out) |
816
|
0 |
8 |
GIT_ASSERT_ARG_WITH_RETVAL(bld, NULL); |
817
|
0 |
8 |
GIT_ASSERT_ARG_WITH_RETVAL(filename, NULL); |
831
|
1 |
3 |
if (entry == NULL) |
842
|
0 |
8 |
GIT_ASSERT_ARG(oid); |
843
|
0 |
8 |
GIT_ASSERT_ARG(bld); |
856
|
0 |
0 |
GIT_ASSERT_ARG(bld); |
857
|
0 |
0 |
GIT_ASSERT_ARG(filter); |
859
|
0 |
0 |
git_strmap_foreach(bld->map, filename, entry, { |
|
0 |
0 |
git_strmap_foreach(bld->map, filename, entry, { |
873
|
0 |
95 |
GIT_ASSERT_ARG(bld); |
875
|
198 |
95 |
git_strmap_foreach_value(bld->map, e, git_tree_entry_free(e)); |
883
|
0 |
94 |
if (bld == NULL) |
895
|
16 |
20 |
if (slash_pos == NULL) |
915
|
0 |
36 |
if (filename_len == 0) { |
922
|
3 |
33 |
if (entry == NULL) { |
932
|
0 |
20 |
if (!git_tree_entry__is_tree(entry)) { |
941
|
20 |
0 |
if (path[filename_len + 1] != '\0') |
950
|
0 |
20 |
if (git_tree_lookup(&subtree, root->object.repo, &entry->oid) < 0) |
974
|
24 |
13 |
git_array_foreach(tree->entries, i, entry) { |
|
24 |
0 |
git_array_foreach(tree->entries, i, entry) { |
975
|
11 |
13 |
if (preorder) { |
977
|
0 |
11 |
if (error < 0) { /* negative value stops iteration */ |
981
|
0 |
11 |
if (error > 0) { /* positive value skips this entry */ |
987
|
4 |
20 |
if (git_tree_entry__is_tree(entry)) { |
992
|
0 |
4 |
if (error < 0) |
999
|
0 |
4 |
if (git_str_oom(path)) |
1005
|
0 |
4 |
if (error != 0) |
1011
|
13 |
11 |
if (!preorder) { |
1013
|
0 |
13 |
if (error < 0) { /* negative value stops iteration */ |
1033
|
4 |
5 |
if (mode != GIT_TREEWALK_POST && mode != GIT_TREEWALK_PRE) { |
|
0 |
4 |
if (mode != GIT_TREEWALK_POST && mode != GIT_TREEWALK_PRE) { |
1079
|
0 |
0 |
while ((slash = strchr(path, '/')) != NULL) { |
1093
|
0 |
0 |
if (slash) |
1107
|
0 |
0 |
if (git_treebuilder_entrycount(popped->bld) == 0) { |
1117
|
0 |
0 |
if (error < 0) { |
1127
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(component->ptr); |
1130
|
0 |
0 |
if (current->tree) { |
1133
|
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) { |
1151
|
0 |
0 |
if ((error = git_vector_init(&entries, nupdates, compare_entries)) < 0) |
1155
|
0 |
0 |
for (i = 0 ; i < nupdates; i++) { |
1156
|
0 |
0 |
if ((error = git_vector_insert_sorted(&entries, (void *) &updates[i], on_dup_entry)) < 0) |
1160
|
0 |
0 |
root_elem = git_array_alloc(stack); |
|
0 |
0 |
root_elem = git_array_alloc(stack); |
1161
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(root_elem); |
1164
|
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) |
1167
|
0 |
0 |
if ((error = git_treebuilder_new(&root_elem->bld, repo, root_elem->tree)) < 0) |
1170
|
0 |
0 |
for (i = 0; i < nupdates; i++) { |
1171
|
0 |
0 |
const git_tree_update *last_update = i == 0 ? NULL : git_vector_get(&entries, i-1); |
1177
|
0 |
0 |
if (last_update) |
1186
|
0 |
0 |
steps_up = last_update == NULL ? 0 : count_slashes(&last_update->path[common_prefix]); |
1188
|
0 |
0 |
for (j = 0; j < steps_up; j++) { |
1189
|
0 |
0 |
tree_stack_entry *current, *popped = git_array_pop(stack); |
1190
|
0 |
0 |
GIT_ASSERT(popped); |
1192
|
0 |
0 |
current = git_array_last(stack); |
1193
|
0 |
0 |
GIT_ASSERT(current); |
1195
|
0 |
0 |
if ((error = create_popped_tree(current, popped, &component)) < 0) |
1201
|
0 |
0 |
while (next_component(&component, path)) { |
1205
|
0 |
0 |
last = git_array_last(stack); |
1206
|
0 |
0 |
entry = last->tree ? git_tree_entry_byname(last->tree, component.ptr) : NULL; |
1207
|
0 |
0 |
if (!entry) |
1210
|
0 |
0 |
if (entry && git_tree_entry_type(entry) != GIT_OBJECT_TREE) { |
|
0 |
0 |
if (entry && git_tree_entry_type(entry) != GIT_OBJECT_TREE) { |
1216
|
0 |
0 |
new_entry = git_array_alloc(stack); |
|
0 |
0 |
new_entry = git_array_alloc(stack); |
1217
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(new_entry); |
1221
|
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) |
1224
|
0 |
0 |
if ((error = git_treebuilder_new(&new_entry->bld, repo, new_entry->tree)) < 0) |
1228
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(new_entry->name); |
1239
|
0 |
0 |
tree_stack_entry *last = git_array_last(stack); |
1242
|
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)) { |
1258
|
0 |
0 |
tree_stack_entry *last = git_array_last(stack); |
1270
|
0 |
0 |
if (error < 0) |
1277
|
0 |
0 |
while ((popped = git_array_pop(stack)) != NULL) { |
|
0 |
0 |
while ((popped = git_array_pop(stack)) != NULL) { |
1278
|
0 |
0 |
current = git_array_last(stack); |
1280
|
0 |
0 |
if (!current) |
1283
|
0 |
0 |
if ((error = create_popped_tree(current, popped, &component)) < 0) |
1293
|
0 |
0 |
if (error < 0) |
1300
|
0 |
0 |
while ((e = git_array_pop(stack)) != NULL) { |
|
0 |
0 |
while ((e = git_array_pop(stack)) != NULL) { |