MCPcopy Index your code
hub / github.com/git/git / fill_bitmap_tree

Function fill_bitmap_tree

pack-bitmap-write.c:571–621  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

569}
570
571static int fill_bitmap_tree(struct bitmap_writer *writer,
572 struct bitmap *bitmap,
573 struct tree *tree,
574 uint32_t pos)
575{
576 int found;
577 struct tree_desc desc;
578 struct name_entry entry;
579
580 bitmap_set(bitmap, pos);
581
582 if (repo_parse_tree(writer->repo, tree) < 0)
583 die("unable to load tree object %s",
584 oid_to_hex(&tree->object.oid));
585 init_tree_desc(&desc, &tree->object.oid, tree->buffer, tree->size);
586
587 while (tree_entry(&desc, &entry)) {
588 switch (object_type(entry.mode)) {
589 case OBJ_TREE:
590 pos = find_object_pos(writer, &entry.oid, &found);
591 if (!found)
592 return -1;
593 if (bitmap_get(bitmap, pos)) {
594 /*
595 * If our bit is already set, then there
596 * is nothing to do. Both this tree and
597 * all of its children will be set.
598 */
599 break;
600 }
601
602 if (fill_bitmap_tree(writer, bitmap,
603 lookup_tree(writer->repo,
604 &entry.oid), pos) < 0)
605 return -1;
606 break;
607 case OBJ_BLOB:
608 pos = find_object_pos(writer, &entry.oid, &found);
609 if (!found)
610 return -1;
611 bitmap_set(bitmap, pos);
612 break;
613 default:
614 /* Gitlink, etc; not reachable */
615 break;
616 }
617 }
618
619 free_tree_buffer(tree);
620 return 0;
621}
622
623static int reused_bitmaps_nr;
624static int reused_pseudo_merge_bitmaps_nr;

Callers 1

fill_bitmap_commitFunction · 0.85

Calls 11

bitmap_setFunction · 0.85
repo_parse_treeFunction · 0.85
oid_to_hexFunction · 0.85
init_tree_descFunction · 0.85
find_object_posFunction · 0.85
bitmap_getFunction · 0.85
lookup_treeFunction · 0.85
free_tree_bufferFunction · 0.85
dieFunction · 0.70
tree_entryFunction · 0.70
object_typeEnum · 0.70

Tested by

no test coverage detected