line |
true |
false |
branch |
47
|
1950 |
0 |
if (odb->rc.owner != NULL) { |
64
|
1 |
1044 |
if (!git_oid_cmp(id, &empty_tree)) |
76
|
648 |
1 |
if ((type = odb_hardcoded_type(id)) == GIT_OBJECT_INVALID) |
82
|
0 |
1 |
GIT_ERROR_CHECK_ALLOC(raw->data); |
96
|
1403 |
0 |
int hdr_max = (hdr_size > INT_MAX-2) ? (INT_MAX-2) : (int)hdr_size; |
101
|
1403 |
0 |
if (len < 0 || len >= hdr_max) { |
|
0 |
1403 |
if (len < 0 || len >= hdr_max) { |
117
|
994 |
0 |
assert(id && obj); |
|
0 |
994 |
assert(id && obj); |
119
|
0 |
994 |
if (!git_object_typeisloose(obj->type)) { |
124
|
0 |
994 |
if (!obj->data && obj->len != 0) { |
|
0 |
0 |
if (!obj->data && obj->len != 0) { |
129
|
0 |
994 |
if ((error = git_odb__format_object_header(&hdrlen, |
146
|
776 |
0 |
if (object != NULL) { |
158
|
774 |
0 |
if (object != NULL) { |
193
|
3 |
1073 |
if (object == NULL) |
207
|
0 |
126 |
if (!git_object_typeisloose(type)) { |
212
|
0 |
126 |
if ((error = git_hash_ctx_init(&ctx)) < 0) |
215
|
0 |
126 |
if ((error = git_odb__format_object_header(&hdr_len, hdr, |
219
|
0 |
126 |
if ((error = git_hash_update(&ctx, hdr, hdr_len)) < 0) |
222
|
109 |
126 |
while (size > 0 && (read_len = p_read(fd, buffer, sizeof(buffer))) > 0) { |
|
109 |
0 |
while (size > 0 && (read_len = p_read(fd, buffer, sizeof(buffer))) > 0) { |
223
|
0 |
109 |
if ((error = git_hash_update(&ctx, buffer, read_len)) < 0) |
232
|
126 |
0 |
if (read_len < 0 || size > 0) { |
|
0 |
126 |
if (read_len < 0 || size > 0) { |
252
|
126 |
39 |
if (!fl) |
259
|
39 |
0 |
if (!(error = git_futils_readbuffer_fd(&raw, fd, size))) { |
266
|
39 |
0 |
if (!error) |
281
|
0 |
0 |
if (git_path_lstat(path, &st) < 0) |
284
|
0 |
0 |
if (!git__is_int(st.st_size) || (int)st.st_size < 0) { |
|
0 |
0 |
if (!git__is_int(st.st_size) || (int)st.st_size < 0) { |
291
|
0 |
0 |
if (S_ISLNK(st.st_mode)) { |
296
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_size, size, 1); |
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_size, size, 1); |
298
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(link_data); |
302
|
0 |
0 |
if (read_len != size) { |
312
|
0 |
0 |
if (fd < 0) |
326
|
0 |
0 |
if ((fd = git_futils_open_ro(path)) < 0) |
329
|
0 |
0 |
if ((error = git_futils_filesize(&size, fd)) < 0) |
332
|
0 |
0 |
if (!git__is_sizet(size)) { |
349
|
0 |
992 |
assert(id); |
379
|
0 |
0 |
assert(stream->written + len <= stream->size); |
399
|
0 |
0 |
GIT_ERROR_CHECK_BLOBSIZE(size); |
403
|
0 |
0 |
GIT_ERROR_CHECK_ALLOC(stream); |
408
|
0 |
0 |
if (stream->buffer == NULL) { |
437
|
1 |
78 |
if (backend_b->priority == backend_a->priority) { |
438
|
0 |
1 |
if (backend_a->is_alternate) |
440
|
1 |
0 |
if (backend_b->is_alternate) |
450
|
0 |
36 |
GIT_ERROR_CHECK_ALLOC(db); |
452
|
0 |
36 |
if (git_cache_init(&db->own_cache) < 0) { |
456
|
0 |
36 |
if (git_vector_init(&db->backends, 4, backend_sort_cmp) < 0) { |
473
|
74 |
0 |
assert(odb && backend); |
|
0 |
74 |
assert(odb && backend); |
475
|
0 |
74 |
GIT_ERROR_CHECK_VERSION(backend, GIT_ODB_BACKEND_VERSION, "git_odb_backend"); |
478
|
0 |
74 |
assert(!backend->odb || backend->odb == odb); |
|
0 |
0 |
assert(!backend->odb || backend->odb == odb); |
481
|
0 |
74 |
GIT_ERROR_CHECK_ALLOC(internal); |
488
|
0 |
74 |
if (git_vector_insert(&odb->backends, internal) < 0) { |
510
|
0 |
7 |
assert(odb); |
526
|
0 |
0 |
assert(out && odb); |
|
0 |
0 |
assert(out && odb); |
529
|
0 |
0 |
if (internal && internal->backend) { |
|
0 |
0 |
if (internal && internal->backend) { |
555
|
0 |
35 |
if (p_stat(objects_dir, &st) < 0) { |
556
|
0 |
0 |
if (as_alternates) |
566
|
0 |
35 |
for (i = 0; i < db->backends.length; ++i) { |
568
|
0 |
0 |
if (backend->disk_inode == inode) |
595
|
0 |
35 |
if (alternate_depth > GIT_ALTERNATES_MAX_DEPTH) |
598
|
0 |
35 |
if (git_buf_joinpath(&alternates_path, objects_dir, GIT_ALTERNATES_FILE) < 0) |
601
|
35 |
0 |
if (git_path_exists(alternates_path.ptr) == false) { |
606
|
0 |
0 |
if (git_futils_readbuffer(&alternates_buf, alternates_path.ptr) < 0) { |
614
|
0 |
0 |
while ((alternate = git__strtok(&buffer, "\r\n")) != NULL) { |
615
|
0 |
0 |
if (*alternate == '\0' || *alternate == '#') |
|
0 |
0 |
if (*alternate == '\0' || *alternate == '#') |
623
|
0 |
0 |
if (*alternate == '.' && !alternate_depth) { |
|
0 |
0 |
if (*alternate == '.' && !alternate_depth) { |
624
|
0 |
0 |
if ((result = git_buf_joinpath(&alternates_path, objects_dir, alternate)) < 0) |
629
|
0 |
0 |
if ((result = git_odb__add_default_backends(odb, alternate, true, alternate_depth + 1)) < 0) |
648
|
2 |
0 |
assert(out && objects_dir); |
|
0 |
2 |
assert(out && objects_dir); |
652
|
0 |
2 |
if (git_odb_new(&db) < 0) |
655
|
0 |
2 |
if (git_odb__add_default_backends(db, objects_dir, 0, 0) < 0) { |
666
|
33 |
0 |
if (caps == GIT_ODB_CAP_FROM_OWNER) { |
670
|
0 |
33 |
if (!repo) { |
675
|
33 |
0 |
if (!git_repository__configmap_lookup(&val, repo, GIT_CONFIGMAP_FSYNCOBJECTFILES)) |
686
|
74 |
36 |
for (i = 0; i < db->backends.length; ++i) { |
704
|
10 |
202 |
if (db == NULL) |
707
|
36 |
166 |
GIT_REFCOUNT_DEC(db, odb_free); |
|
36 |
0 |
GIT_REFCOUNT_DEC(db, odb_free); |
718
|
8 |
4 |
for (i = 0; i < db->backends.length && !found; ++i) { |
|
8 |
0 |
for (i = 0; i < db->backends.length && !found; ++i) { |
722
|
0 |
8 |
if (only_refreshed && !b->refresh) |
|
0 |
0 |
if (only_refreshed && !b->refresh) |
725
|
8 |
0 |
if (b->exists != NULL) |
740
|
914 |
449 |
for (i = 0; i < db->backends.length && !found; ++i) { |
|
912 |
2 |
for (i = 0; i < db->backends.length && !found; ++i) { |
744
|
332 |
580 |
if (only_refreshed && !b->refresh) |
|
169 |
163 |
if (only_refreshed && !b->refresh) |
747
|
735 |
8 |
if (b->freshen != NULL) |
749
|
8 |
0 |
else if (b->exists != NULL) |
758
|
288 |
0 |
assert(db && id); |
|
0 |
288 |
assert(db && id); |
760
|
125 |
163 |
if (odb_freshen_1(db, id, false)) |
763
|
163 |
0 |
if (!git_odb_refresh(db)) |
774
|
4 |
0 |
assert(db && id); |
|
0 |
4 |
assert(db && id); |
776
|
0 |
4 |
if (git_oid_is_zero(id)) |
779
|
0 |
4 |
if ((object = git_cache_get_raw(odb_cache(db), id)) != NULL) { |
784
|
4 |
0 |
if (odb_exists_1(db, id, false)) |
787
|
0 |
0 |
if (!git_odb_refresh(db)) |
801
|
0 |
0 |
for (i = 0; i < db->backends.length; ++i) { |
805
|
0 |
0 |
if (only_refreshed && !b->refresh) |
|
0 |
0 |
if (only_refreshed && !b->refresh) |
808
|
0 |
0 |
if (!b->exists_prefix) |
812
|
0 |
0 |
if (error == GIT_ENOTFOUND || error == GIT_PASSTHROUGH) |
|
0 |
0 |
if (error == GIT_ENOTFOUND || error == GIT_PASSTHROUGH) |
814
|
0 |
0 |
if (error) |
818
|
0 |
0 |
if (num_found) { |
819
|
0 |
0 |
if (git_oid__cmp(&last_found, &found)) |
827
|
0 |
0 |
if (!num_found) |
830
|
0 |
0 |
if (out) |
842
|
0 |
0 |
assert(db && short_id); |
|
0 |
0 |
assert(db && short_id); |
844
|
0 |
0 |
if (len < GIT_OID_MINPREFIXLEN) |
847
|
0 |
0 |
if (len >= GIT_OID_HEXSZ) { |
848
|
0 |
0 |
if (git_odb_exists(db, short_id)) { |
849
|
0 |
0 |
if (out) |
862
|
0 |
0 |
if (error == GIT_ENOTFOUND && !git_odb_refresh(db)) |
|
0 |
0 |
if (error == GIT_ENOTFOUND && !git_odb_refresh(db)) |
865
|
0 |
0 |
if (error == GIT_ENOTFOUND) |
878
|
0 |
0 |
assert(db && ids); |
|
0 |
0 |
assert(db && ids); |
880
|
0 |
0 |
for (i = 0; i < count; i++) { |
884
|
0 |
0 |
if (!query->type) |
888
|
0 |
0 |
if (query->length >= GIT_OID_MINPREFIXLEN && query->length < GIT_OID_HEXSZ) { |
|
0 |
0 |
if (query->length >= GIT_OID_MINPREFIXLEN && query->length < GIT_OID_HEXSZ) { |
892
|
0 |
0 |
if (!error) { |
902
|
0 |
0 |
if (query->length >= GIT_OID_HEXSZ) { |
906
|
0 |
0 |
if (!error) { |
907
|
0 |
0 |
if (query->type != GIT_OBJECT_ANY && query->type != actual_type) |
|
0 |
0 |
if (query->type != GIT_OBJECT_ANY && query->type != actual_type) |
944
|
3 |
379 |
if (object) |
959
|
396 |
0 |
if (!only_refreshed && (ht = odb_hardcoded_type(id)) != GIT_OBJECT_INVALID) { |
|
0 |
396 |
if (!only_refreshed && (ht = odb_hardcoded_type(id)) != GIT_OBJECT_INVALID) { |
965
|
787 |
0 |
for (i = 0; i < db->backends.length; ++i) { |
969
|
0 |
787 |
if (only_refreshed && !b->refresh) |
|
0 |
0 |
if (only_refreshed && !b->refresh) |
972
|
0 |
787 |
if (!b->read_header) { |
990
|
0 |
0 |
return passthrough ? GIT_PASSTHROUGH : GIT_ENOTFOUND; |
1000
|
399 |
0 |
assert(db && id && out && len_p && type_p); |
|
399 |
0 |
assert(db && id && out && len_p && type_p); |
|
399 |
0 |
assert(db && id && out && len_p && type_p); |
|
399 |
0 |
assert(db && id && out && len_p && type_p); |
|
0 |
399 |
assert(db && id && out && len_p && type_p); |
1004
|
0 |
399 |
if (git_oid_is_zero(id)) |
1007
|
3 |
396 |
if ((object = git_cache_get_raw(odb_cache(db), id)) != NULL) { |
1016
|
0 |
396 |
if (error == GIT_ENOTFOUND && !git_odb_refresh(db)) |
|
0 |
0 |
if (error == GIT_ENOTFOUND && !git_odb_refresh(db)) |
1019
|
0 |
396 |
if (error == GIT_ENOTFOUND) |
1023
|
396 |
0 |
if (!error) |
1026
|
0 |
0 |
if (error == GIT_PASSTHROUGH) { |
1032
|
0 |
0 |
if (!error) { |
1052
|
649 |
3 |
if (!only_refreshed) { |
1053
|
0 |
649 |
if ((error = odb_read_hardcoded(&found, &raw, id)) < 0) |
1057
|
1309 |
633 |
for (i = 0; i < db->backends.length && !found; ++i) { |
|
1290 |
19 |
for (i = 0; i < db->backends.length && !found; ++i) { |
1061
|
6 |
1284 |
if (only_refreshed && !b->refresh) |
|
3 |
3 |
if (only_refreshed && !b->refresh) |
1064
|
1287 |
0 |
if (b->read != NULL) { |
1066
|
1287 |
0 |
if (error == GIT_PASSTHROUGH || error == GIT_ENOTFOUND) |
|
642 |
645 |
if (error == GIT_PASSTHROUGH || error == GIT_ENOTFOUND) |
1069
|
0 |
645 |
if (error < 0) |
1076
|
6 |
646 |
if (!found) |
1079
|
646 |
0 |
if (git_odb__strict_hash_verification) { |
1080
|
0 |
646 |
if ((error = git_odb_hash(&hashed, raw.data, raw.len, raw.type)) < 0) |
1083
|
0 |
646 |
if (!git_oid_equal(id, &hashed)) { |
1090
|
0 |
646 |
if ((object = odb_object__alloc(id, &raw)) == NULL) { |
1098
|
0 |
646 |
if (error) |
1107
|
649 |
0 |
assert(out && db && id); |
|
649 |
0 |
assert(out && db && id); |
|
0 |
649 |
assert(out && db && id); |
1109
|
0 |
649 |
if (git_oid_is_zero(id)) |
1113
|
0 |
649 |
if (*out != NULL) |
1118
|
3 |
646 |
if (error == GIT_ENOTFOUND && !git_odb_refresh(db)) |
|
3 |
0 |
if (error == GIT_ENOTFOUND && !git_odb_refresh(db)) |
1121
|
3 |
646 |
if (error == GIT_ENOTFOUND) |
1133
|
0 |
0 |
if (git_oid_is_zero(id)) |
1136
|
0 |
0 |
if ((object = git_cache_get_raw(odb_cache(db), id)) != NULL) { |
1144
|
0 |
0 |
if (error == GIT_PASSTHROUGH) { |
1146
|
0 |
0 |
if (!error) |
1165
|
292 |
146 |
for (i = 0; i < db->backends.length; ++i) { |
1169
|
16 |
276 |
if (only_refreshed && !b->refresh) |
|
8 |
8 |
if (only_refreshed && !b->refresh) |
1172
|
284 |
0 |
if (b->read_prefix != NULL) { |
1176
|
130 |
154 |
if (error == GIT_ENOTFOUND || error == GIT_PASSTHROUGH) { |
|
0 |
130 |
if (error == GIT_ENOTFOUND || error == GIT_PASSTHROUGH) { |
1181
|
0 |
130 |
if (error) |
1187
|
0 |
130 |
if (found && git_oid__cmp(&full_oid, &found_full_oid)) { |
|
0 |
0 |
if (found && git_oid__cmp(&full_oid, &found_full_oid)) { |
1205
|
16 |
130 |
if (!found) |
1208
|
130 |
0 |
if (git_odb__strict_hash_verification) { |
1211
|
0 |
130 |
if ((error = git_odb_hash(&hash, raw.data, raw.len, raw.type)) < 0) |
1214
|
0 |
130 |
if (!git_oid_equal(&found_full_oid, &hash)) { |
1220
|
0 |
130 |
if ((object = odb_object__alloc(&found_full_oid, &raw)) == NULL) { |
1228
|
0 |
130 |
if (error) |
1240
|
138 |
0 |
assert(out && db); |
|
0 |
138 |
assert(out && db); |
1242
|
0 |
138 |
if (len < GIT_OID_MINPREFIXLEN) |
1245
|
0 |
138 |
if (len > GIT_OID_HEXSZ) |
1248
|
122 |
16 |
if (len == GIT_OID_HEXSZ) { |
1250
|
0 |
122 |
if (*out != NULL) |
1258
|
8 |
130 |
if (error == GIT_ENOTFOUND && !git_odb_refresh(db)) |
|
8 |
0 |
if (error == GIT_ENOTFOUND && !git_odb_refresh(db)) |
1261
|
8 |
130 |
if (error == GIT_ENOTFOUND) |
1272
|
2 |
1 |
git_vector_foreach(&db->backends, i, internal) { |
1275
|
0 |
2 |
if (error != 0) |
1289
|
171 |
0 |
assert(oid && db); |
|
0 |
171 |
assert(oid && db); |
1291
|
0 |
171 |
if ((error = git_odb_hash(oid, data, len, type)) < 0) |
1294
|
0 |
171 |
if (git_oid_is_zero(oid)) |
1297
|
51 |
120 |
if (git_odb__freshen(db, oid)) |
1300
|
240 |
114 |
for (i = 0, error = GIT_ERROR; i < db->backends.length && error < 0; ++i) { |
|
234 |
6 |
for (i = 0, error = GIT_ERROR; i < db->backends.length && error < 0; ++i) { |
1305
|
0 |
234 |
if (internal->is_alternate) |
1308
|
120 |
114 |
if (b->write != NULL) |
1312
|
0 |
120 |
if (!error || error == GIT_PASSTHROUGH) |
|
0 |
0 |
if (!error || error == GIT_PASSTHROUGH) |
1319
|
0 |
0 |
if ((error = git_odb_open_wstream(&stream, db, len, type)) != 0) |
1335
|
0 |
63 |
if ((error = git_odb__format_object_header(&hdrlen, |
1349
|
63 |
0 |
assert(stream && db); |
|
0 |
63 |
assert(stream && db); |
1351
|
126 |
63 |
for (i = 0; i < db->backends.length && error < 0; ++i) { |
|
126 |
0 |
for (i = 0; i < db->backends.length && error < 0; ++i) { |
1356
|
0 |
126 |
if (internal->is_alternate) |
1359
|
63 |
63 |
if (b->writestream != NULL) { |
1362
|
0 |
63 |
} else if (b->write != NULL) { |
1368
|
0 |
63 |
if (error < 0) { |
1369
|
0 |
0 |
if (error == GIT_PASSTHROUGH) |
1371
|
0 |
0 |
else if (!writes) |
1378
|
0 |
63 |
GIT_ERROR_CHECK_ALLOC(ctx); |
1380
|
63 |
0 |
if ((error = git_hash_ctx_init(ctx)) < 0 || |
|
63 |
0 |
if ((error = git_hash_ctx_init(ctx)) < 0 || |
1389
|
0 |
63 |
if (error) |
1413
|
0 |
62 |
if (stream->received_bytes > stream->declared_size) |
1422
|
0 |
63 |
if (stream->received_bytes != stream->declared_size) |
1428
|
20 |
43 |
if (git_odb__freshen(stream->backend->odb, out)) |
1441
|
0 |
63 |
if (stream == NULL) |
1459
|
0 |
0 |
assert(stream && db); |
|
0 |
0 |
assert(stream && db); |
1461
|
0 |
0 |
for (i = 0; i < db->backends.length && error < 0; ++i) { |
|
0 |
0 |
for (i = 0; i < db->backends.length && error < 0; ++i) { |
1465
|
0 |
0 |
if (b->readstream != NULL) { |
1471
|
0 |
0 |
if (error == GIT_PASSTHROUGH) |
1473
|
0 |
0 |
if (error < 0 && !reads) |
|
0 |
0 |
if (error < 0 && !reads) |
1484
|
0 |
0 |
assert(out && db); |
|
0 |
0 |
assert(out && db); |
1486
|
0 |
0 |
for (i = 0; i < db->backends.length && error < 0; ++i) { |
|
0 |
0 |
for (i = 0; i < db->backends.length && error < 0; ++i) { |
1491
|
0 |
0 |
if (internal->is_alternate) |
1494
|
0 |
0 |
if (b->writepack != NULL) { |
1500
|
0 |
0 |
if (error == GIT_PASSTHROUGH) |
1502
|
0 |
0 |
if (error < 0 && !writes) |
|
0 |
0 |
if (error < 0 && !writes) |
1530
|
0 |
176 |
assert(db); |
1532
|
357 |
176 |
for (i = 0; i < db->backends.length; ++i) { |
1536
|
176 |
181 |
if (b->refresh != NULL) { |
1538
|
0 |
176 |
if (error < 0) |
1562
|
1638 |
0 |
if (oid != NULL) { |
1587
|
0 |
0 |
GIT_INIT_STRUCTURE_FROM_TEMPLATE( |