| line |
true |
false |
branch |
|
91
|
0 |
5 |
if ((error = p_mmap(&map, sizeof(*hdr), GIT_PROT_READ, GIT_MAP_SHARED, pack->mwf.fd, 0)) < 0) |
|
98
|
0 |
5 |
if (hdr->hdr_signature != ntohl(PACK_SIGNATURE)) { |
|
103
|
0 |
5 |
if (!pack_version_ok(hdr->hdr_version)) { |
|
|
0 |
0 |
if (!pack_version_ok(hdr->hdr_version)) { |
|
121
|
0 |
0 |
GIT_INIT_STRUCTURE_FROM_TEMPLATE( |
|
144
|
4 |
1 |
if (in_opts) |
|
148
|
0 |
5 |
GIT_ERROR_CHECK_ALLOC(idx); |
|
152
|
0 |
5 |
idx->mode = mode ? mode : GIT_PACK_FILE_MODE; |
|
155
|
5 |
0 |
if ((error = git_hash_ctx_init(&idx->hash_ctx)) < 0 || |
|
|
5 |
0 |
if ((error = git_hash_ctx_init(&idx->hash_ctx)) < 0 || |
|
156
|
5 |
0 |
(error = git_hash_ctx_init(&idx->trailer)) < 0 || |
|
162
|
0 |
5 |
if (git_repository__fsync_gitdir) |
|
166
|
0 |
5 |
if (error < 0) |
|
171
|
0 |
5 |
if (fd < 0) |
|
177
|
0 |
5 |
if (error < 0) |
|
181
|
0 |
5 |
if ((error = git_mwindow_file_register(&idx->pack->mwf)) < 0) |
|
188
|
0 |
0 |
if (fd != -1) |
|
191
|
0 |
0 |
if (git_buf_len(&tmp_path) > 0) |
|
194
|
0 |
0 |
if (idx->pack != NULL) |
|
214
|
0 |
2 |
GIT_ERROR_CHECK_ALLOC(delta); |
|
217
|
0 |
2 |
if (git_vector_insert(&idx->deltas, delta) < 0) |
|
229
|
0 |
43 |
if ((error = git_odb__format_object_header(&hdrlen, |
|
240
|
43 |
0 |
assert(idx && stream); |
|
|
0 |
43 |
assert(idx && stream); |
|
243
|
0 |
86 |
if ((read = git_packfile_stream_read(stream, idx->objbuf, sizeof(idx->objbuf))) < 0) |
|
246
|
0 |
86 |
if (idx->do_verify) |
|
250
|
43 |
43 |
} while (read > 0); |
|
252
|
0 |
43 |
if (read < 0) |
|
263
|
0 |
2 |
assert(type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA); |
|
|
0 |
0 |
assert(type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA); |
|
265
|
2 |
0 |
if (type == GIT_OBJECT_REF_DELTA) { |
|
271
|
0 |
0 |
if (error < 0) |
|
283
|
0 |
4 |
assert(stream); |
|
287
|
2 |
4 |
} while (read > 0); |
|
289
|
2 |
2 |
if (read < 0) |
|
303
|
45 |
45 |
while (size) { |
|
305
|
0 |
45 |
if (ptr == NULL) |
|
326
|
0 |
0 |
if ((!idx->odb || !git_odb_exists(idx->odb, oid)) && |
|
327
|
0 |
0 |
!git_oidmap_exists(idx->pack->idx_cache, oid) && |
|
330
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(dup); |
|
344
|
0 |
0 |
if (obj->type != GIT_OBJECT_BLOB && |
|
|
0 |
0 |
if (obj->type != GIT_OBJECT_BLOB && |
|
345
|
0 |
0 |
obj->type != GIT_OBJECT_TREE && |
|
346
|
0 |
0 |
obj->type != GIT_OBJECT_COMMIT && |
|
350
|
0 |
0 |
if ((error = git_object__from_raw(&object, obj->data, obj->len, obj->type)) < 0) |
|
353
|
0 |
0 |
if ((expected = git_oidmap_get(idx->expected_oids, &object->cached.oid)) != NULL) { |
|
362
|
0 |
0 |
if (idx->odb && git_odb_exists(idx->odb, &object->cached.oid)) |
|
|
0 |
0 |
if (idx->odb && git_odb_exists(idx->odb, &object->cached.oid)) |
|
372
|
0 |
0 |
git_array_foreach(tree->entries, i, entry) |
|
|
0 |
0 |
git_array_foreach(tree->entries, i, entry) |
|
373
|
0 |
0 |
if (add_expected_oid(idx, entry->oid) < 0) |
|
384
|
0 |
0 |
git_array_foreach(commit->parent_ids, i, parent_oid) |
|
|
0 |
0 |
git_array_foreach(commit->parent_ids, i, parent_oid) |
|
385
|
0 |
0 |
if (add_expected_oid(idx, parent_oid) < 0) |
|
388
|
0 |
0 |
if (add_expected_oid(idx, &commit->tree_id) < 0) |
|
397
|
0 |
0 |
if (add_expected_oid(idx, &tag->target) < 0) |
|
423
|
0 |
43 |
GIT_ERROR_CHECK_ALLOC(entry); |
|
426
|
0 |
43 |
GIT_ERROR_CHECK_ALLOC(pentry); |
|
430
|
0 |
43 |
if (entry_start > UINT31_MAX) { |
|
437
|
0 |
43 |
if (idx->do_verify) { |
|
444
|
0 |
0 |
if ((error = check_object_connectivity(idx, &rawobj)) < 0) |
|
451
|
0 |
43 |
if (git_oidmap_exists(idx->pack->idx_cache, &pentry->sha1)) { |
|
457
|
0 |
43 |
if ((error = git_oidmap_set(idx->pack->idx_cache, &pentry->sha1, pentry)) < 0) { |
|
465
|
0 |
43 |
if (crc_object(&entry->crc, &idx->pack->mwf, entry_start, entry_size) < 0) |
|
469
|
0 |
43 |
if (git_vector_insert(&idx->objects, entry) < 0) |
|
472
|
5230 |
43 |
for (i = oid.id[0]; i < 256; ++i) { |
|
493
|
0 |
2 |
if (entry_start > UINT31_MAX) { |
|
509
|
0 |
2 |
if (git_vector_insert(&idx->objects, entry) < 0) |
|
512
|
134 |
2 |
for (i = entry->oid.id[0]; i < 256; ++i) { |
|
527
|
0 |
2 |
GIT_ERROR_CHECK_ALLOC(entry); |
|
529
|
0 |
2 |
if (git_odb__hashobj(&oid, obj) < 0) { |
|
535
|
0 |
2 |
GIT_ERROR_CHECK_ALLOC(pentry); |
|
542
|
0 |
2 |
if (crc_object(&entry->crc, &idx->pack->mwf, entry_start, entry_size) < 0) |
|
556
|
41 |
11 |
if (idx->progress_cb) |
|
568
|
0 |
91 |
if (size == 0) |
|
572
|
45 |
46 |
if (size >= GIT_OID_RAWSZ) { |
|
583
|
8 |
38 |
if (idx->inbuf_len + size <= GIT_OID_RAWSZ) { |
|
610
|
91 |
0 |
assert(data && size); |
|
|
0 |
91 |
assert(data && size); |
|
612
|
0 |
91 |
if ((error = git__mmap_alignment(&mmap_alignment)) < 0) |
|
619
|
0 |
91 |
if ((error = p_mmap(&map, page_offset + size, GIT_PROT_WRITE, GIT_MAP_SHARED, fd, page_start)) < 0) |
|
639
|
0 |
91 |
if (!size) |
|
642
|
0 |
91 |
if ((error = git__mmap_alignment(&mmap_alignment)) < 0) |
|
671
|
84 |
47 |
if (idx->pack->mwf.size <= idx->off + 20) |
|
674
|
45 |
2 |
if (!idx->have_stream) { |
|
676
|
0 |
45 |
if (error == GIT_EBUFS) { |
|
680
|
0 |
45 |
if (error < 0) |
|
688
|
43 |
2 |
if (type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA) { |
|
|
0 |
43 |
if (type == GIT_OBJECT_REF_DELTA || type == GIT_OBJECT_OFS_DELTA) { |
|
690
|
0 |
2 |
if (error == GIT_EBUFS) { |
|
694
|
0 |
2 |
if (error < 0) |
|
702
|
0 |
43 |
if (error < 0) |
|
710
|
0 |
45 |
if (error < 0) |
|
714
|
4 |
43 |
if (idx->have_delta) { |
|
721
|
2 |
45 |
if (error == GIT_EBUFS) |
|
728
|
0 |
45 |
if (error < 0) |
|
731
|
2 |
43 |
if (idx->have_delta) { |
|
737
|
0 |
45 |
if (error < 0) |
|
740
|
43 |
2 |
if (!idx->have_delta) { |
|
745
|
0 |
45 |
if ((error = do_progress_callback(idx, stats)) != 0) |
|
757
|
91 |
0 |
assert(idx && data && stats); |
|
|
91 |
0 |
assert(idx && data && stats); |
|
|
0 |
91 |
assert(idx && data && stats); |
|
759
|
0 |
91 |
if ((error = append_to_pack(idx, data, size)) < 0) |
|
767
|
5 |
86 |
if (!idx->parsed_header) { |
|
770
|
0 |
5 |
if ((unsigned)idx->pack->mwf.size < sizeof(struct git_pack_header)) |
|
773
|
0 |
5 |
if ((error = parse_header(&idx->hdr, idx->pack)) < 0) |
|
780
|
5 |
0 |
if (idx->nr_objects <= git_indexer__max_objects) { |
|
787
|
0 |
5 |
if (git_oidmap_new(&idx->pack->idx_cache) < 0) |
|
791
|
0 |
5 |
if (git_vector_init(&idx->objects, total_objects, objects_cmp) < 0) |
|
794
|
0 |
5 |
if (git_vector_init(&idx->deltas, total_objects / 2, NULL) < 0) |
|
804
|
0 |
5 |
if ((error = do_progress_callback(idx, stats)) != 0) |
|
813
|
131 |
5 |
while (stats->indexed_objects < idx->nr_objects) { |
|
814
|
86 |
45 |
if ((error = read_stream_object(idx, stats)) != 0) { |
|
815
|
86 |
0 |
if (error == GIT_EBUFS) |
|
835
|
330 |
0 |
while (slash > 0 && path->ptr[slash - 1] != '/') |
|
|
320 |
10 |
while (slash > 0 && path->ptr[slash - 1] != '/') |
|
838
|
0 |
10 |
if (git_buf_grow(path, slash + 1 + strlen(prefix) + |
|
848
|
0 |
10 |
return git_buf_oom(path) ? -1 : 0; |
|
877
|
0 |
0 |
if (git_odb_read(&obj, idx->odb, id) < 0) { |
|
886
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(entry); |
|
892
|
0 |
0 |
if ((error = append_to_pack(idx, hdr, hdr_len)) < 0) |
|
898
|
0 |
0 |
if ((error = git_zstream_deflatebuf(&buf, data, len)) < 0) |
|
902
|
0 |
0 |
if ((error = append_to_pack(idx, buf.ptr, buf.size)) < 0) |
|
911
|
0 |
0 |
if ((error = append_to_pack(idx, &foo, GIT_OID_RAWSZ)) < 0) |
|
917
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(pentry); |
|
926
|
0 |
0 |
if (error) { |
|
948
|
0 |
0 |
assert(git_vector_length(&idx->deltas) > 0); |
|
950
|
0 |
0 |
if (idx->odb == NULL) { |
|
956
|
0 |
0 |
git_vector_foreach(&idx->deltas, i, delta) { |
|
957
|
0 |
0 |
if (!delta) |
|
962
|
0 |
0 |
if (error < 0) |
|
965
|
0 |
0 |
if (type == GIT_OBJECT_REF_DELTA) { |
|
971
|
0 |
0 |
if (!found_ref_delta) { |
|
978
|
0 |
0 |
if (base_info == NULL) { |
|
986
|
0 |
0 |
if (has_entry(idx, &base)) |
|
989
|
0 |
0 |
if (inject_object(idx, &base) < 0) |
|
1004
|
4 |
3 |
while (idx->deltas.length > 0) { |
|
1007
|
4 |
4 |
git_vector_foreach(&idx->deltas, i, delta) { |
|
1010
|
2 |
2 |
if (!delta) |
|
1015
|
0 |
2 |
if ((error = git_packfile_unpack(&obj, idx->pack, &idx->off)) < 0) { |
|
1016
|
0 |
0 |
if (error == GIT_PASSTHROUGH) { |
|
1023
|
0 |
2 |
if (idx->do_verify && check_object_connectivity(idx, &obj) < 0) |
|
|
0 |
0 |
if (idx->do_verify && check_object_connectivity(idx, &obj) < 0) |
|
1027
|
0 |
2 |
if (hash_and_save(idx, &obj, delta->delta_off) < 0) |
|
1034
|
0 |
2 |
if ((progress_cb_result = do_progress_callback(idx, stats)) < 0) |
|
1043
|
2 |
2 |
if (!non_null) |
|
1046
|
0 |
2 |
if (!progressed && (fix_thin_pack(idx, stats) < 0)) { |
|
|
0 |
0 |
if (!progressed && (fix_thin_pack(idx, stats) < 0)) { |
|
1070
|
0 |
0 |
if (write_at(idx, &idx->hdr, 0, sizeof(struct git_pack_header)) < 0) |
|
1081
|
0 |
0 |
while (hashed < mwf->size) { |
|
1083
|
0 |
0 |
if (ptr == NULL) |
|
1107
|
0 |
5 |
if (!idx->parsed_header) { |
|
1113
|
0 |
5 |
if (idx->off + 20 < idx->pack->mwf.size) { |
|
1117
|
0 |
5 |
if (idx->off + 20 > idx->pack->mwf.size) { |
|
1123
|
0 |
5 |
if (packfile_trailer == NULL) { |
|
1133
|
0 |
5 |
if (git_oid_cmp(&file_hash, &trailer_hash)) { |
|
1141
|
0 |
5 |
if ((error = resolve_deltas(idx, stats)) < 0) |
|
1144
|
0 |
5 |
if (stats->indexed_objects != stats->total_objects) { |
|
1149
|
0 |
5 |
if (stats->local_objects > 0) { |
|
1150
|
0 |
0 |
if (update_header_and_rehash(idx, stats) < 0) |
|
1163
|
0 |
5 |
if (git_oidmap_size(idx->expected_oids) > 0) { |
|
1178
|
0 |
5 |
if (git_buf_oom(&filename)) |
|
1181
|
0 |
5 |
if (git_filebuf_open(&index_file, filename.ptr, |
|
|
0 |
5 |
if (git_filebuf_open(&index_file, filename.ptr, |
|
1193
|
1280 |
5 |
for (i = 0; i < 256; ++i) { |
|
1199
|
45 |
5 |
git_vector_foreach(&idx->objects, i, entry) { |
|
1204
|
45 |
5 |
git_vector_foreach(&idx->objects, i, entry) { |
|
1209
|
45 |
5 |
git_vector_foreach(&idx->objects, i, entry) { |
|
1212
|
0 |
45 |
if (entry->offset == UINT32_MAX) |
|
1221
|
45 |
5 |
git_vector_foreach(&idx->objects, i, entry) { |
|
1224
|
45 |
0 |
if (entry->offset != UINT32_MAX) |
|
1234
|
0 |
5 |
if (git_filebuf_write(&index_file, &trailer_hash, GIT_OID_RAWSZ) < 0) |
|
1238
|
0 |
5 |
if (git_filebuf_hash(&trailer_hash, &index_file) < 0) |
|
1244
|
0 |
5 |
if (index_path(&filename, idx, ".idx") < 0) |
|
1248
|
0 |
5 |
if (git_filebuf_commit_at(&index_file, filename.ptr) < 0) |
|
1254
|
0 |
5 |
if (p_ftruncate(idx->pack->mwf.fd, idx->pack->mwf.size) < 0) { |
|
1259
|
0 |
5 |
if (idx->do_fsync && p_fsync(idx->pack->mwf.fd) < 0) { |
|
|
0 |
0 |
if (idx->do_fsync && p_fsync(idx->pack->mwf.fd) < 0) { |
|
1265
|
0 |
5 |
if (p_close(idx->pack->mwf.fd) < 0) { |
|
1272
|
0 |
5 |
if (index_path(&filename, idx, ".pack") < 0) |
|
1276
|
0 |
5 |
if (p_rename(idx->pack->pack_name, git_buf_cstr(&filename)) < 0) |
|
1302
|
0 |
5 |
if (idx == NULL) |
|
1305
|
0 |
5 |
if (idx->have_stream) |
|
1310
|
5 |
0 |
if (idx->pack->idx_cache) { |
|
1312
|
45 |
5 |
git_oidmap_foreach_value(idx->pack->idx_cache, pentry, { |
|
1321
|
5 |
0 |
if (!git_mutex_lock(&git__mwindow_mutex)) { |
|
1322
|
0 |
5 |
if (!idx->pack_committed) |
|
1330
|
0 |
5 |
while (git_oidmap_iterate((void **) &value, idx->expected_oids, &iter, &key) == 0) |