| 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); |
|
145
|
7 |
0 |
git_oidmap_new(&pb->walk_objects) < 0 || |
|
153
|
7 |
0 |
git_zstream_init(&pb->zstream, GIT_ZSTREAM_DEFLATE) < 0 || |
|
154
|
7 |
0 |
git_repository_odb(&pb->odb, repo) < 0 || |
|
180
|
0 |
6 |
assert(pb); |
|
186
|
0 |
6 |
assert(1 == pb->nr_threads); |
|
199
|
0 |
6 |
for (i = 0, po = pb->object_list; i < pb->nr_objects; i++, po++) { |
|
200
|
0 |
0 |
if (git_oidmap_set(pb->object_ix, &po->id, po) < 0) |
|
214
|
64 |
0 |
assert(pb && oid); |
|
|
0 |
64 |
assert(pb && oid); |
|
218
|
11 |
53 |
if (git_oidmap_exists(pb->object_ix, oid)) |
|
221
|
6 |
47 |
if (pb->nr_objects >= pb->nr_alloc) { |
|
222
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC_ADD(&newsize, pb->nr_alloc, 1024); |
|
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC_ADD(&newsize, pb->nr_alloc, 1024); |
|
223
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC_MULTIPLY(&newsize, newsize / 2, 3); |
|
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC_MULTIPLY(&newsize, newsize / 2, 3); |
|
225
|
0 |
6 |
if (!git__is_uint32(newsize)) { |
|
234
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC(pb->object_list); |
|
236
|
0 |
6 |
if (rehash(pb) < 0) |
|
243
|
0 |
53 |
if ((ret = git_odb_read_header(&po->size, &po->type, pb->odb, oid)) < 0) |
|
250
|
0 |
53 |
if (git_oidmap_set(pb->object_ix, &po->id, po) < 0) { |
|
257
|
32 |
21 |
if (pb->progress_cb) { |
|
261
|
2 |
30 |
if (elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) { |
|
268
|
0 |
2 |
if (ret) |
|
294
|
0 |
0 |
if (error < 0 && error != GIT_EBUFS) |
|
|
0 |
0 |
if (error < 0 && error != GIT_EBUFS) |
|
297
|
0 |
0 |
if (error == GIT_EBUFS || delta_size != po->delta_size) { |
|
|
0 |
0 |
if (error == GIT_EBUFS || delta_size != po->delta_size) { |
|
332
|
3 |
50 |
if (po->delta) { |
|
333
|
3 |
0 |
if (po->delta_data) |
|
335
|
0 |
0 |
else if ((error = get_delta(&data, pb->odb, po)) < 0) |
|
341
|
0 |
50 |
if ((error = git_odb_read(&obj, pb->odb, &po->id)) < 0) |
|
352
|
53 |
0 |
if ((error = write_cb(hdr, hdr_len, cb_data)) < 0 || |
|
|
53 |
0 |
if ((error = write_cb(hdr, hdr_len, cb_data)) < 0 || |
|
356
|
3 |
50 |
if (type == GIT_OBJECT_REF_DELTA) { |
|
357
|
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 || |
|
363
|
3 |
50 |
if (po->z_delta_size) { |
|
366
|
3 |
0 |
if ((error = write_cb(data, data_len, cb_data)) < 0 || |
|
|
3 |
0 |
if ((error = write_cb(data, data_len, cb_data)) < 0 || |
|
371
|
0 |
50 |
GIT_ERROR_CHECK_ALLOC(zbuf); |
|
375
|
0 |
50 |
if ((error = git_zstream_set_input(&pb->zstream, data, data_len)) < 0) |
|
378
|
50 |
50 |
while (!git_zstream_done(&pb->zstream)) { |
|
379
|
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 || |
|
380
|
50 |
0 |
(error = write_cb(zbuf, zbuf_len, cb_data)) < 0 || |
|
395
|
3 |
50 |
if (po->delta) { |
|
424
|
0 |
56 |
if (po->recursing) { |
|
427
|
3 |
53 |
} else if (po->written) { |
|
432
|
3 |
50 |
if (po->delta) { |
|
435
|
0 |
3 |
if ((error = write_one(status, pb, po->delta, write_cb, cb_data)) < 0) |
|
439
|
0 |
3 |
if (*status == WRITE_ONE_RECURSIVE) |
|
453
|
0 |
53 |
if (po->filled) |
|
463
|
0 |
0 |
while (po) { |
|
464
|
0 |
0 |
if (add_to_order) { |
|
469
|
0 |
0 |
for (s = po->delta_sibling; s; s = s->delta_sibling) { |
|
474
|
0 |
0 |
if (po->delta_child) { |
|
480
|
0 |
0 |
if (po->delta_sibling) { |
|
486
|
0 |
0 |
while (po && !po->delta_sibling) { |
|
|
0 |
0 |
while (po && !po->delta_sibling) { |
|
491
|
0 |
0 |
if (!po) { |
|
506
|
0 |
0 |
for (root = po; root->delta; root = root->delta) |
|
518
|
0 |
0 |
if ((po = git_oidmap_get(pb->object_ix, oid)) == NULL) |
|
533
|
0 |
7 |
if ((wo = git__mallocarray(pb->nr_objects, sizeof(*wo))) == NULL) |
|
536
|
53 |
7 |
for (i = 0; i < pb->nr_objects; i++) { |
|
549
|
53 |
7 |
for (i = pb->nr_objects; i > 0;) { |
|
551
|
50 |
3 |
if (!po->delta) |
|
561
|
0 |
7 |
if (git_tag_foreach(pb->repo, &cb_tag_foreach, pb) < 0) { |
|
570
|
53 |
7 |
for (i = wo_end = 0; i < pb->nr_objects; i++) { |
|
572
|
0 |
53 |
if (po->tagged) |
|
581
|
0 |
7 |
for (; i < pb->nr_objects; i++) { |
|
583
|
0 |
0 |
if (po->tagged) |
|
590
|
0 |
7 |
for (i = last_untagged; i < pb->nr_objects; i++) { |
|
592
|
0 |
0 |
if (po->type != GIT_OBJECT_COMMIT && |
|
|
0 |
0 |
if (po->type != GIT_OBJECT_COMMIT && |
|
601
|
0 |
7 |
for (i = last_untagged; i < pb->nr_objects; i++) { |
|
603
|
0 |
0 |
if (po->type != GIT_OBJECT_TREE) |
|
611
|
0 |
7 |
for (i = last_untagged; i < pb->nr_objects; i++) { |
|
613
|
0 |
0 |
if (!po->filled) |
|
617
|
0 |
7 |
if (wo_end != pb->nr_objects) { |
|
639
|
0 |
7 |
if (write_order == NULL) |
|
642
|
0 |
7 |
if (!git__is_uint32(pb->nr_objects)) { |
|
652
|
7 |
0 |
if ((error = write_cb(&ph, sizeof(ph), cb_data)) < 0 || |
|
|
7 |
0 |
if ((error = write_cb(&ph, sizeof(ph), cb_data)) < 0 || |
|
659
|
53 |
7 |
for ( ; i < pb->nr_objects; ++i) { |
|
662
|
0 |
53 |
if ((error = write_one(&status, pb, po, write_cb, cb_data)) < 0) |
|
667
|
0 |
7 |
} while (pb->nr_remaining && i < pb->nr_objects); |
|
|
0 |
0 |
} while (pb->nr_remaining && i < pb->nr_objects); |
|
669
|
0 |
7 |
if ((error = git_hash_final(&entry_oid, &pb->ctx)) < 0) |
|
676
|
0 |
7 |
for ( ; i < pb->nr_objects; ++i) { |
|
678
|
0 |
0 |
if (po->delta_data) { |
|
699
|
9 |
34 |
if (a->type > b->type) |
|
701
|
17 |
17 |
if (a->type < b->type) |
|
703
|
0 |
17 |
if (a->hash > b->hash) |
|
705
|
0 |
17 |
if (a->hash < b->hash) |
|
715
|
6 |
11 |
if (a->size > b->size) |
|
717
|
6 |
5 |
if (a->size < b->size) |
|
719
|
4 |
1 |
return a < b ? -1 : (a > b); /* newest first */ |
|
730
|
0 |
3 |
if (git__add_sizet_overflow(&new_size, pb->delta_cache_size, delta_size)) |
|
733
|
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) |
|
736
|
3 |
0 |
if (delta_size < pb->cache_max_small_delta_size) |
|
740
|
0 |
0 |
if ((src_size >> 20) + (trg_size >> 21) > (delta_size >> 10)) |
|
758
|
13 |
20 |
if (trg_object->type != src_object->type) { |
|
768
|
0 |
20 |
if (src->depth >= max_depth) |
|
773
|
20 |
0 |
if (!trg_object->delta) { |
|
783
|
0 |
20 |
if (max_size == 0) |
|
787
|
0 |
20 |
sizediff = src_size < trg_size ? trg_size - src_size : 0; |
|
788
|
0 |
20 |
if (sizediff >= max_size) |
|
790
|
0 |
20 |
if (trg_size < src_size / 32) |
|
794
|
12 |
8 |
if (!trg->data) { |
|
795
|
0 |
12 |
if (git_odb_read(&obj, pb->odb, &trg_object->id) < 0) |
|
800
|
0 |
12 |
GIT_ERROR_CHECK_ALLOC(trg->data); |
|
805
|
0 |
12 |
if (sz != trg_size) { |
|
813
|
6 |
14 |
if (!src->data) { |
|
816
|
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 || |
|
822
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC(src->data); |
|
827
|
0 |
6 |
if (sz != src_size) { |
|
835
|
12 |
8 |
if (!src->index) { |
|
836
|
0 |
12 |
if (git_delta_index_init(&src->index, src->data, src_size) < 0) |
|
842
|
17 |
3 |
if (git_delta_create_from_index(&delta_buf, &delta_size, src->index, trg->data, trg_size, |
|
846
|
0 |
3 |
if (trg_object->delta) { |
|
848
|
0 |
0 |
if (delta_size == trg_object->delta_size && |
|
|
0 |
0 |
if (delta_size == trg_object->delta_size && |
|
856
|
0 |
3 |
if (trg_object->delta_data) { |
|
858
|
0 |
0 |
assert(pb->delta_cache_size >= trg_object->delta_size); |
|
862
|
3 |
0 |
if (delta_cacheable(pb, src_size, trg_size, delta_size)) { |
|
868
|
0 |
3 |
if (overflow) { |
|
874
|
0 |
3 |
GIT_ERROR_CHECK_ALLOC(trg_object->delta_data); |
|
894
|
0 |
0 |
while (child) { |
|
896
|
0 |
0 |
if (m < c) |
|
907
|
0 |
24 |
if (n->index) { |
|
913
|
0 |
24 |
if (n->data) { |
|
928
|
19 |
11 |
if (pb->progress_cb) { |
|
932
|
16 |
3 |
if (force || elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) { |
|
|
1 |
15 |
if (force || elapsed >= MIN_PROGRESS_UPDATE_INTERVAL) { |
|
939
|
0 |
4 |
if (ret) |
|
959
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC(array); |
|
966
|
6 |
24 |
if (!*list_size) { |
|
981
|
0 |
24 |
while (pb->window_memory_limit && |
|
|
0 |
0 |
while (pb->window_memory_limit && |
|
982
|
0 |
0 |
mem_usage > pb->window_memory_limit && |
|
995
|
0 |
24 |
if (po->delta_child) { |
|
998
|
0 |
0 |
if (delta_limit > max_depth) |
|
1005
|
44 |
0 |
while (--j > 0) { |
|
1010
|
33 |
11 |
if (other_idx >= window) |
|
1014
|
11 |
33 |
if (!m->object) |
|
1017
|
0 |
33 |
if (try_delta(pb, n, m, max_depth, &mem_usage, &ret) < 0) |
|
1019
|
13 |
20 |
if (ret < 0) |
|
1021
|
3 |
17 |
else if (ret > 0) |
|
1039
|
3 |
21 |
if (po->delta_data) { |
|
1040
|
0 |
3 |
if (git_zstream_deflatebuf(&zbuf, po->delta_data, po->delta_size) < 0) |
|
1045
|
0 |
3 |
GIT_ERROR_CHECK_ALLOC(po->delta_data); |
|
1062
|
3 |
21 |
if (po->delta && max_depth <= n->depth) |
|
|
0 |
3 |
if (po->delta && max_depth <= n->depth) |
|
1070
|
3 |
21 |
if (po->delta) { |
|
1074
|
5 |
3 |
while (dist--) { |
|
1084
|
24 |
0 |
if (count + 1 < window) |
|
1086
|
0 |
24 |
if (idx >= window) |
|
1092
|
66 |
6 |
for (i = 0; i < window; ++i) { |
|
1316
|
10 |
1 |
if (pb->nr_objects == 0 || pb->done) |
|
|
4 |
6 |
if (pb->nr_objects == 0 || pb->done) |
|
1323
|
3 |
3 |
if (pb->progress_cb) |
|
1327
|
0 |
6 |
GIT_ERROR_CHECK_ALLOC(delta_list); |
|
1329
|
53 |
6 |
for (i = 0; i < pb->nr_objects; ++i) { |
|
1333
|
24 |
29 |
if (po->size < 50 || po->size > pb->big_file_threshold) |
|
|
0 |
24 |
if (po->size < 50 || po->size > pb->big_file_threshold) |
|
1339
|
6 |
0 |
if (n > 1) { |
|
1341
|
0 |
6 |
if (ll_find_deltas(pb, delta_list, n, |
|
1360
|
0 |
4 |
PREPARE_PACK; |
|
1366
|
0 |
3 |
PREPARE_PACK; |
|
1392
|
0 |
4 |
PREPARE_PACK; |
|
1394
|
0 |
4 |
if (path == NULL) { |
|
1395
|
0 |
0 |
if ((error = git_repository_item_path(&object_path, pb->repo, GIT_REPOSITORY_ITEM_OBJECTS)) < 0) |
|
1397
|
0 |
0 |
if ((error = git_buf_joinpath(&object_path, git_buf_cstr(&object_path), "pack")) < 0) |
|
1405
|
0 |
4 |
if ((error = git_indexer_new(&indexer, path, mode, pb->odb, &opts)) < 0) |
|
1408
|
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) |
|
1414
|
0 |
4 |
if ((error = git_packbuilder_foreach(pb, write_cb, &ctx)) < 0) |
|
1417
|
0 |
4 |
if ((error = git_indexer_commit(indexer, &stats)) < 0) |
|
1443
|
0 |
11 |
if (git_tree_entry_type(entry) == GIT_OBJECT_COMMIT) |
|
1446
|
11 |
0 |
if (!(error = git_buf_sets(&ctx->buf, root)) && |
|
|
11 |
0 |
if (!(error = git_buf_sets(&ctx->buf, root)) && |
|
1462
|
0 |
4 |
if (git_packbuilder_insert_tree(pb, git_commit_tree_id(commit)) < 0) |
|
1475
|
4 |
0 |
if (!(error = git_tree_lookup(&tree, pb->repo, oid)) && |
|
|
4 |
0 |
if (!(error = git_tree_lookup(&tree, pb->repo, oid)) && |
|
1489
|
1 |
0 |
assert(pb && id); |
|
|
0 |
1 |
assert(pb && id); |
|
1491
|
0 |
1 |
if ((error = git_object_lookup(&obj, pb->repo, id, GIT_OBJECT_ANY)) < 0) |
|
1505
|
0 |
0 |
if ((error = git_packbuilder_insert(pb, id, name)) < 0) |
|
1535
|
0 |
36 |
if (!obj) { |
|
1551
|
36 |
8 |
if ((obj = git_oidmap_get(pb->walk_objects, id)) == NULL) { |
|
1552
|
0 |
36 |
if ((error = lookup_walk_object(&obj, pb, id)) < 0) |
|
1555
|
0 |
36 |
if ((error = git_oidmap_set(pb->walk_objects, &obj->id, obj)) < 0) |
|
1568
|
0 |
0 |
if ((error = retrieve_object(&obj, pb, id)) < 0) |
|
1583
|
0 |
0 |
if ((error = retrieve_object(&obj, pb, id)) < 0) |
|
1586
|
0 |
0 |
if (obj->uninteresting) |
|
1591
|
0 |
0 |
if ((error = git_tree_lookup(&tree, pb->repo, id)) < 0) |
|
1594
|
0 |
0 |
for (i = 0; i < git_tree_entrycount(tree); i++) { |
|
1599
|
0 |
0 |
if ((error = mark_tree_uninteresting(pb, entry_id)) < 0) |
|
1603
|
0 |
0 |
if ((error = mark_blob_uninteresting(pb, entry_id)) < 0) |
|
1628
|
3 |
3 |
for (list = commits; list; list = list->next) { |
|
1629
|
3 |
0 |
if (!list->item->uninteresting) |
|
1632
|
0 |
0 |
if ((error = git_commit_lookup(&commit, pb->repo, &list->item->oid)) < 0) |
|
1638
|
0 |
0 |
if (error < 0) |
|
1653
|
0 |
17 |
if ((error = retrieve_object(&obj, pb, git_tree_id(tree))) < 0) |
|
1656
|
17 |
0 |
if (obj->seen || obj->uninteresting) |
|
|
0 |
17 |
if (obj->seen || obj->uninteresting) |
|
1661
|
0 |
17 |
if ((error = git_packbuilder_insert(pb, &obj->id, NULL))) |
|
1664
|
26 |
17 |
for (i = 0; i < git_tree_entrycount(tree); i++) { |
|
1669
|
0 |
8 |
if ((error = git_tree_lookup(&subtree, pb->repo, entry_id)) < 0) |
|
1675
|
0 |
8 |
if (error < 0) |
|
1680
|
0 |
18 |
if ((error = retrieve_object(&obj, pb, entry_id)) < 0) |
|
1682
|
0 |
18 |
if (obj->uninteresting) |
|
1685
|
0 |
18 |
if ((error = git_packbuilder_insert(pb, entry_id, name)) < 0) |
|
1706
|
0 |
9 |
if ((error = git_packbuilder_insert(pb, &obj->id, NULL)) < 0) |
|
1709
|
0 |
9 |
if ((error = git_commit_lookup(&commit, pb->repo, &obj->id)) < 0) |
|
1712
|
0 |
9 |
if ((error = git_tree_lookup(&tree, pb->repo, git_commit_tree_id(commit))) < 0) |
|
1715
|
0 |
9 |
if ((error = pack_objects_insert_tree(pb, tree)) < 0) |
|
1730
|
3 |
0 |
assert(pb && walk); |
|
|
0 |
3 |
assert(pb && walk); |
|
1732
|
0 |
3 |
if ((error = mark_edges_uninteresting(pb, walk->user_input)) < 0) |
|
1743
|
9 |
3 |
while ((error = git_revwalk_next(&id, walk)) == 0) { |
|
1744
|
0 |
9 |
if ((error = retrieve_object(&obj, pb, &id)) < 0) |
|
1747
|
9 |
0 |
if (obj->seen || obj->uninteresting) |
|
|
0 |
9 |
if (obj->seen || obj->uninteresting) |
|
1750
|
0 |
9 |
if ((error = pack_objects_insert_commit(pb, obj)) < 0) |
|
1754
|
3 |
0 |
if (error == GIT_ITEROVER) |
|
1762
|
0 |
3 |
if (!pb) |
|
1773
|
0 |
7 |
if (pb == NULL) |
|
1784
|
7 |
0 |
if (pb->odb) |
|
1787
|
7 |
0 |
if (pb->object_ix) |
|
1790
|
6 |
1 |
if (pb->object_list) |