272
}
273
graph_map = xmmap(NULL, graph_size, PROT_READ, MAP_PRIVATE, fd, 0);
274
close(fd);
275
- prepare_repo_settings(r);
276
- ret = parse_commit_graph(&r->settings, graph_map, graph_size);
275
276
+ ret = parse_commit_graph(r, graph_map, graph_size);
277
if (ret)
278
ret->odb_source = source;
279
else
373
return 0;
374
}
375
377
-struct commit_graph *parse_commit_graph(struct repo_settings *s,
376
+struct commit_graph *parse_commit_graph(struct repository *r,
377
void *graph_map, size_t graph_size)
378
{
379
const unsigned char *data;
385
if (!graph_map)
386
return NULL;
387
389
- if (graph_size < graph_min_size(the_hash_algo))
388
+ if (graph_size < graph_min_size(r->hash_algo))
389
return NULL;
390
391
data = (const unsigned char *)graph_map;
405
}
406
407
hash_version = *(unsigned char*)(data + 5);
409
- if (hash_version != oid_version(the_hash_algo)) {
408
+ if (hash_version != oid_version(r->hash_algo)) {
409
error(_("commit-graph hash version %X does not match version %X"),
411
- hash_version, oid_version(the_hash_algo));
410
+ hash_version, oid_version(r->hash_algo));
411
return NULL;
412
}
413
414
graph = alloc_commit_graph();
415
417
- graph->hash_algo = the_hash_algo;
416
+ graph->hash_algo = r->hash_algo;
417
graph->num_chunks = *(unsigned char*)(data + 6);
418
graph->data = graph_map;
419
graph->data_len = graph_size;
420
421
if (graph_size < GRAPH_HEADER_SIZE +
422
(graph->num_chunks + 1) * CHUNK_TOC_ENTRY_SIZE +
424
- GRAPH_FANOUT_SIZE + the_hash_algo->rawsz) {
423
+ GRAPH_FANOUT_SIZE + r->hash_algo->rawsz) {
424
error(_("commit-graph file is too small to hold %u chunks"),
425
graph->num_chunks);
426
free(graph);
451
pair_chunk(cf, GRAPH_CHUNKID_BASE, &graph->chunk_base_graphs,
452
&graph->chunk_base_graphs_size);
453
455
- if (s->commit_graph_generation_version >= 2) {
454
+ prepare_repo_settings(r);
455
+
456
+ if (r->settings.commit_graph_generation_version >= 2) {
457
read_chunk(cf, GRAPH_CHUNKID_GENERATION_DATA,
458
graph_read_generation_data, graph);
459
pair_chunk(cf, GRAPH_CHUNKID_GENERATION_DATA_OVERFLOW,
464
graph->read_generation_data = 1;
465
}
466
466
- if (s->commit_graph_changed_paths_version) {
467
+ if (r->settings.commit_graph_changed_paths_version) {
468
read_chunk(cf, GRAPH_CHUNKID_BLOOMINDEXES,
469
graph_read_bloom_index, graph);
470
read_chunk(cf, GRAPH_CHUNKID_BLOOMDATA,
481
}
482
483
oidread(&graph->oid, graph->data + graph->data_len - graph->hash_algo->rawsz,
483
- the_repository->hash_algo);
484
+ r->hash_algo);
485
486
free_chunkfile(cf);
487
return graph;