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

Function build_pseudo_merge_bitmaps

pack-bitmap-write.c:828–894  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

826}
827
828static int build_pseudo_merge_bitmaps(struct bitmap_writer *writer,
829 struct bitmap_index *old_bitmap,
830 const uint32_t *mapping,
831 int *nr_stored)
832{
833 size_t i = bitmap_writer_nr_selected_commits(writer);
834 int ret = 0;
835
836 if (!writer->pseudo_merges_nr)
837 return 0;
838
839 trace2_region_enter("pack-bitmap-write", "building_pseudo_merge_bitmaps",
840 writer->repo);
841
842 for (; i < writer->selected_nr; i++) {
843 struct bitmapped_commit *merge = &writer->selected[i];
844 struct commit_list *p;
845 struct bitmap *parents = bitmap_new();
846 struct ewah_bitmap *objects = NULL;
847
848 if (!merge->pseudo_merge)
849 BUG("found non-pseudo merge commit at %"PRIuMAX,
850 (uintmax_t)i);
851
852 for (p = merge->commit->parents; p; p = p->next) {
853 int found;
854 uint32_t pos = find_object_pos(writer,
855 &p->item->object.oid,
856 &found);
857 if (!found) {
858 bitmap_free(parents);
859 ret = -1;
860 goto done;
861 }
862 bitmap_set(parents, pos);
863 }
864
865 merge->pseudo_merge_parents = bitmap_to_ewah(parents);
866 bitmap_free(parents);
867
868 if (build_pseudo_merge_bitmap(writer, old_bitmap, mapping,
869 merge->commit, &objects) < 0) {
870 ret = -1;
871 goto done;
872 }
873 merge->bitmap = objects;
874
875 (*nr_stored)++;
876 display_progress(writer->progress, *nr_stored);
877 }
878
879done:
880 trace2_region_leave("pack-bitmap-write", "building_pseudo_merge_bitmaps",
881 writer->repo);
882
883 trace2_data_intmax("pack-bitmap-write", writer->repo,
884 "pseudo_merge_bitmap_nr",
885 pseudo_merge_bitmap_nr);

Callers 1

bitmap_writer_buildFunction · 0.85

Calls 8

bitmap_newFunction · 0.85
find_object_posFunction · 0.85
bitmap_freeFunction · 0.85
bitmap_setFunction · 0.85
bitmap_to_ewahFunction · 0.85
display_progressFunction · 0.85

Tested by

no test coverage detected