Branch Coverage

deps/libgit2/src/pack-objects.c
Criterion Covered Total %
branch 251 500 50.2


line true false branch
79 34 19 if (!name)
87 108 19 while ((c = *name++) != 0) {
88 0 108 if (git__isspace(c))
101 0 7 if ((ret = git_repository_config_snapshot(&config, pb->repo)) < 0)
119 0 7 config_get("pack.deltaCacheSize", pb->max_delta_cache_size,
0 0 config_get("pack.deltaCacheSize", pb->max_delta_cache_size,
7 0 config_get("pack.deltaCacheSize", pb->max_delta_cache_size,
0 0 config_get("pack.deltaCacheSize", pb->max_delta_cache_size,
121 0 7 config_get("pack.deltaCacheLimit", pb->cache_max_small_delta_size,
0 0 config_get("pack.deltaCacheLimit", pb->cache_max_small_delta_size,
7 0 config_get("pack.deltaCacheLimit", pb->cache_max_small_delta_size,
0 0 config_get("pack.deltaCacheLimit", pb->cache_max_small_delta_size,
123 0 7 config_get("pack.deltaCacheSize", pb->big_file_threshold,
0 0 config_get("pack.deltaCacheSize", pb->big_file_threshold,
7 0 config_get("pack.deltaCacheSize", pb->big_file_threshold,
0 0 config_get("pack.deltaCacheSize", pb->big_file_threshold,
125 0 7 config_get("pack.windowMemory", pb->window_memory_limit, 0);
0 0 config_get("pack.windowMemory", pb->window_memory_limit, 0);
7 0 config_get("pack.windowMemory", pb->window_memory_limit, 0);
0 0 config_get("pack.windowMemory", pb->window_memory_limit, 0);
142 0 7 GIT_ERROR_CHECK_ALLOC(pb);
144 0 7 if (git_oidmap_new(&pb->object_ix) < 0)
147 0 7 if (git_oidmap_new(&pb->walk_objects) < 0)
156 7 0 git_zstream_init(&pb->zstream, GIT_ZSTREAM_DEFLATE) < 0 ||
157 7 0 git_repository_odb(&pb->odb, repo) < 0 ||
183 0 3 assert(pb);
189 0 3 assert(1 == pb->nr_threads);
202 0 6 for (i = 0, po = pb->object_list; i < pb->nr_objects; i++, po++) {
203 0 0 if (git_oidmap_set(pb->object_ix, &po->id, po) < 0)
217 64 0 assert(pb && oid);
0 64 assert(pb && oid);
221 11 53 if (git_oidmap_exists(pb->object_ix, oid))
224 6 47 if (pb->nr_objects >= pb->nr_alloc) {
225 0 6 GIT_ERROR_CHECK_ALLOC_ADD(&newsize, pb->nr_alloc, 1024);
0 6 GIT_ERROR_CHECK_ALLOC_ADD(&newsize, pb->nr_alloc, 1024);
226 0 6 GIT_ERROR_CHECK_ALLOC_MULTIPLY(&newsize, newsize / 2, 3);
0 6 GIT_ERROR_CHECK_ALLOC_MULTIPLY(&newsize, newsize / 2, 3);
228 0 6 if (!git__is_uint32(newsize)) {
237 0 6 GIT_ERROR_CHECK_ALLOC(pb->object_list);
239 0 6 if (rehash(pb) < 0)
246 0 53 if ((ret = git_odb_read_header(&po->size, &po->type, pb->odb, oid)) < 0)
253 0 53 if (git_oidmap_set(pb->object_ix, &po->id, po) < 0) {
260 32 21 if (pb->progress_cb) {
264 2 30 if (elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
271 0 2 if (ret)
297 0 0 if (error < 0 && error != GIT_EBUFS)
0 0 if (error < 0 && error != GIT_EBUFS)
300 0 0 if (error == GIT_EBUFS || delta_size != po->delta_size) {
0 0 if (error == GIT_EBUFS || delta_size != po->delta_size) {
335 3 50 if (po->delta) {
336 3 0 if (po->delta_data)
338 0 0 else if ((error = get_delta(&data, pb->odb, po)) < 0)
344 0 50 if ((error = git_odb_read(&obj, pb->odb, &po->id)) < 0)
355 53 0 if ((error = write_cb(hdr, hdr_len, cb_data)) < 0 ||
53 0 if ((error = write_cb(hdr, hdr_len, cb_data)) < 0 ||
359 3 50 if (type == GIT_OBJECT_REF_DELTA) {
360 3 0 if ((error = write_cb(po->delta->id.id, GIT_OID_RAWSZ, cb_data)) < 0 ||
3 0 if ((error = write_cb(po->delta->id.id, GIT_OID_RAWSZ, cb_data)) < 0 ||
366 3 50 if (po->z_delta_size) {
369 3 0 if ((error = write_cb(data, data_len, cb_data)) < 0 ||
3 0 if ((error = write_cb(data, data_len, cb_data)) < 0 ||
374 0 50 GIT_ERROR_CHECK_ALLOC(zbuf);
378 0 50 if ((error = git_zstream_set_input(&pb->zstream, data, data_len)) < 0)
381 50 50 while (!git_zstream_done(&pb->zstream)) {
382 50 0 if ((error = git_zstream_get_output(zbuf, &zbuf_len, &pb->zstream)) < 0 ||
50 0 if ((error = git_zstream_get_output(zbuf, &zbuf_len, &pb->zstream)) < 0 ||
383 50 0 (error = write_cb(zbuf, zbuf_len, cb_data)) < 0 ||
398 3 50 if (po->delta) {
427 0 56 if (po->recursing) {
430 3 53 } else if (po->written) {
435 3 50 if (po->delta) {
438 0 3 if ((error = write_one(status, pb, po->delta, write_cb, cb_data)) < 0)
442 0 3 if (*status == WRITE_ONE_RECURSIVE)
456 0 53 if (po->filled)
466 0 0 while (po) {
467 0 0 if (add_to_order) {
472 0 0 for (s = po->delta_sibling; s; s = s->delta_sibling) {
477 0 0 if (po->delta_child) {
483 0 0 if (po->delta_sibling) {
489 0 0 while (po && !po->delta_sibling) {
0 0 while (po && !po->delta_sibling) {
494 0 0 if (!po) {
509 0 0 for (root = po; root->delta; root = root->delta)
521 0 0 if ((po = git_oidmap_get(pb->object_ix, oid)) == NULL)
536 0 7 if ((wo = git__mallocarray(pb->nr_objects, sizeof(*wo))) == NULL)
539 53 7 for (i = 0; i < pb->nr_objects; i++) {
552 53 7 for (i = pb->nr_objects; i > 0;) {
554 50 3 if (!po->delta)
564 0 7 if (git_tag_foreach(pb->repo, &cb_tag_foreach, pb) < 0) {
573 53 7 for (i = wo_end = 0; i < pb->nr_objects; i++) {
575 0 53 if (po->tagged)
584 0 7 for (; i < pb->nr_objects; i++) {
586 0 0 if (po->tagged)
593 0 7 for (i = last_untagged; i < pb->nr_objects; i++) {
595 0 0 if (po->type != GIT_OBJECT_COMMIT &&
0 0 if (po->type != GIT_OBJECT_COMMIT &&
604 0 7 for (i = last_untagged; i < pb->nr_objects; i++) {
606 0 0 if (po->type != GIT_OBJECT_TREE)
614 0 7 for (i = last_untagged; i < pb->nr_objects; i++) {
616 0 0 if (!po->filled)
620 0 7 if (wo_end != pb->nr_objects) {
642 0 7 if (write_order == NULL)
645 0 7 if (!git__is_uint32(pb->nr_objects)) {
655 7 0 if ((error = write_cb(&ph, sizeof(ph), cb_data)) < 0 ||
7 0 if ((error = write_cb(&ph, sizeof(ph), cb_data)) < 0 ||
662 53 7 for ( ; i < pb->nr_objects; ++i) {
665 0 53 if ((error = write_one(&status, pb, po, write_cb, cb_data)) < 0)
670 0 7 } while (pb->nr_remaining && i < pb->nr_objects);
0 0 } while (pb->nr_remaining && i < pb->nr_objects);
672 0 7 if ((error = git_hash_final(&entry_oid, &pb->ctx)) < 0)
679 0 7 for ( ; i < pb->nr_objects; ++i) {
681 0 0 if (po->delta_data) {
702 9 34 if (a->type > b->type)
704 17 17 if (a->type < b->type)
706 0 17 if (a->hash > b->hash)
708 0 17 if (a->hash < b->hash)
718 6 11 if (a->size > b->size)
720 6 5 if (a->size < b->size)
722 4 1 return a < b ? -1 : (a > b); /* newest first */
733 0 3 if (git__add_sizet_overflow(&new_size, pb->delta_cache_size, delta_size))
736 3 0 if (pb->max_delta_cache_size && new_size > pb->max_delta_cache_size)
0 3 if (pb->max_delta_cache_size && new_size > pb->max_delta_cache_size)
739 3 0 if (delta_size < pb->cache_max_small_delta_size)
743 0 0 if ((src_size >> 20) + (trg_size >> 21) > (delta_size >> 10))
761 13 20 if (trg_object->type != src_object->type) {
771 0 20 if (src->depth >= max_depth)
776 20 0 if (!trg_object->delta) {
786 0 20 if (max_size == 0)
790 0 20 sizediff = src_size < trg_size ? trg_size - src_size : 0;
791 0 20 if (sizediff >= max_size)
793 0 20 if (trg_size < src_size / 32)
797 12 8 if (!trg->data) {
798 0 12 if (git_odb_read(&obj, pb->odb, &trg_object->id) < 0)
803 0 12 GIT_ERROR_CHECK_ALLOC(trg->data);
808 0 12 if (sz != trg_size) {
816 6 14 if (!src->data) {
819 6 0 if (git_odb_read(&obj, pb->odb, &src_object->id) < 0 ||
0 6 if (git_odb_read(&obj, pb->odb, &src_object->id) < 0 ||
825 0 6 GIT_ERROR_CHECK_ALLOC(src->data);
830 0 6 if (sz != src_size) {
838 12 8 if (!src->index) {
839 0 12 if (git_delta_index_init(&src->index, src->data, src_size) < 0)
845 17 3 if (git_delta_create_from_index(&delta_buf, &delta_size, src->index, trg->data, trg_size,
849 0 3 if (trg_object->delta) {
851 0 0 if (delta_size == trg_object->delta_size &&
0 0 if (delta_size == trg_object->delta_size &&
859 0 3 if (trg_object->delta_data) {
861 0 0 assert(pb->delta_cache_size >= trg_object->delta_size);
865 3 0 if (delta_cacheable(pb, src_size, trg_size, delta_size)) {
871 0 3 if (overflow) {
877 0 3 GIT_ERROR_CHECK_ALLOC(trg_object->delta_data);
897 0 0 while (child) {
899 0 0 if (m < c)
910 0 24 if (n->index) {
916 0 24 if (n->data) {
931 19 11 if (pb->progress_cb) {
935 16 3 if (force || elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
1 15 if (force || elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) {
942 0 4 if (ret)
962 0 6 GIT_ERROR_CHECK_ALLOC(array);
969 6 24 if (!*list_size) {
984 0 24 while (pb->window_memory_limit &&
0 0 while (pb->window_memory_limit &&
985 0 0 mem_usage > pb->window_memory_limit &&
998 0 24 if (po->delta_child) {
1001 0 0 if (delta_limit > max_depth)
1008 44 0 while (--j > 0) {
1013 33 11 if (other_idx >= window)
1017 11 33 if (!m->object)
1020 0 33 if (try_delta(pb, n, m, max_depth, &mem_usage, &ret) < 0)
1022 13 20 if (ret < 0)
1024 3 17 else if (ret > 0)
1042 3 21 if (po->delta_data) {
1043 0 3 if (git_zstream_deflatebuf(&zbuf, po->delta_data, po->delta_size) < 0)
1048 0 3 GIT_ERROR_CHECK_ALLOC(po->delta_data);
1065 3 21 if (po->delta && max_depth <= n->depth)
0 3 if (po->delta && max_depth <= n->depth)
1073 3 21 if (po->delta) {
1077 5 3 while (dist--) {
1087 24 0 if (count + 1 < window)
1089 0 24 if (idx >= window)
1095 66 6 for (i = 0; i < window; ++i) {
1319 10 1 if (pb->nr_objects == 0 || pb->done)
4 6 if (pb->nr_objects == 0 || pb->done)
1326 3 3 if (pb->progress_cb)
1330 0 6 GIT_ERROR_CHECK_ALLOC(delta_list);
1332 53 6 for (i = 0; i < pb->nr_objects; ++i) {
1336 24 29 if (po->size < 50 || po->size > pb->big_file_threshold)
0 24 if (po->size < 50 || po->size > pb->big_file_threshold)
1342 6 0 if (n > 1) {
1344 0 6 if (ll_find_deltas(pb, delta_list, n,
1363 0 4 PREPARE_PACK;
1369 0 3 PREPARE_PACK;
1393 0 4 PREPARE_PACK;
1398 0 4 if (git_indexer_new(
1402 4 0 if (!git_repository__configmap_lookup(&t, pb->repo, GIT_CONFIGMAP_FSYNCOBJECTFILES) && t)
0 4 if (!git_repository__configmap_lookup(&t, pb->repo, GIT_CONFIGMAP_FSYNCOBJECTFILES) && t)
1435 0 11 if (git_tree_entry_type(entry) == GIT_OBJECT_COMMIT)
1438 11 0 if (!(error = git_buf_sets(&ctx->buf, root)) &&
11 0 if (!(error = git_buf_sets(&ctx->buf, root)) &&
1454 0 4 if (git_packbuilder_insert_tree(pb, git_commit_tree_id(commit)) < 0)
1467 4 0 if (!(error = git_tree_lookup(&tree, pb->repo, oid)) &&
4 0 if (!(error = git_tree_lookup(&tree, pb->repo, oid)) &&
1481 1 0 assert(pb && id);
0 1 assert(pb && id);
1483 0 1 if ((error = git_object_lookup(&obj, pb->repo, id, GIT_OBJECT_ANY)) < 0)
1497 0 0 if ((error = git_packbuilder_insert(pb, id, name)) < 0)
1527 0 36 if (!obj) {
1543 36 8 if ((obj = git_oidmap_get(pb->walk_objects, id)) == NULL) {
1544 0 36 if ((error = lookup_walk_object(&obj, pb, id)) < 0)
1547 0 36 if ((error = git_oidmap_set(pb->walk_objects, &obj->id, obj)) < 0)
1560 0 0 if ((error = retrieve_object(&obj, pb, id)) < 0)
1575 0 0 if ((error = retrieve_object(&obj, pb, id)) < 0)
1578 0 0 if (obj->uninteresting)
1583 0 0 if ((error = git_tree_lookup(&tree, pb->repo, id)) < 0)
1586 0 0 for (i = 0; i < git_tree_entrycount(tree); i++) {
1591 0 0 if ((error = mark_tree_uninteresting(pb, entry_id)) < 0)
1595 0 0 if ((error = mark_blob_uninteresting(pb, entry_id)) < 0)
1620 3 3 for (list = commits; list; list = list->next) {
1621 3 0 if (!list->item->uninteresting)
1624 0 0 if ((error = git_commit_lookup(&commit, pb->repo, &list->item->oid)) < 0)
1630 0 0 if (error < 0)
1645 0 17 if ((error = retrieve_object(&obj, pb, git_tree_id(tree))) < 0)
1648 17 0 if (obj->seen || obj->uninteresting)
0 17 if (obj->seen || obj->uninteresting)
1653 0 17 if ((error = git_packbuilder_insert(pb, &obj->id, NULL)))
1656 26 17 for (i = 0; i < git_tree_entrycount(tree); i++) {
1661 0 8 if ((error = git_tree_lookup(&subtree, pb->repo, entry_id)) < 0)
1667 0 8 if (error < 0)
1672 0 18 if ((error = retrieve_object(&obj, pb, entry_id)) < 0)
1674 0 18 if (obj->uninteresting)
1677 0 18 if ((error = git_packbuilder_insert(pb, entry_id, name)) < 0)
1698 0 9 if ((error = git_packbuilder_insert(pb, &obj->id, NULL)) < 0)
1701 0 9 if ((error = git_commit_lookup(&commit, pb->repo, &obj->id)) < 0)
1704 0 9 if ((error = git_tree_lookup(&tree, pb->repo, git_commit_tree_id(commit))) < 0)
1707 0 9 if ((error = insert_tree(pb, tree)) < 0)
1722 3 0 assert(pb && walk);
0 3 assert(pb && walk);
1724 0 3 if ((error = mark_edges_uninteresting(pb, walk->user_input)) < 0)
1735 9 3 while ((error = git_revwalk_next(&id, walk)) == 0) {
1736 0 9 if ((error = retrieve_object(&obj, pb, &id)) < 0)
1739 9 0 if (obj->seen || obj->uninteresting)
0 9 if (obj->seen || obj->uninteresting)
1742 0 9 if ((error = insert_commit(pb, obj)) < 0)
1746 3 0 if (error == GIT_ITEROVER)
1754 0 3 if (!pb)
1765 0 7 if (pb == NULL)
1776 7 0 if (pb->odb)
1779 7 0 if (pb->object_ix)
1782 6 1 if (pb->object_list)