Merge branch 'tb/pseudo-merge-bitmap-fixes'

We created a useless pseudo-merge reachability bitmap that is about
0 commits, and attempted to include commits that are not in packs,
which made no sense.  These bugs have been corrected.

* tb/pseudo-merge-bitmap-fixes:
  pseudo-merge.c: ensure pseudo-merge groups are closed
  pseudo-merge.c: do not generate empty pseudo-merge commits
  t/t5333-pseudo-merge-bitmaps.sh: demonstrate empty pseudo-merge groups
  pack-bitmap-write.c: select pseudo-merges even for small bitmaps
  pack-bitmap: drop redundant args from `bitmap_writer_finish()`
  pack-bitmap: drop redundant args from `bitmap_writer_build()`
  pack-bitmap: drop redundant args from `bitmap_writer_build_type_index()`
  pack-bitmap: initialize `bitmap_writer_init()` with packing_data
This commit is contained in:
Junio C Hamano
2024-08-26 11:32:21 -07:00
6 changed files with 96 additions and 39 deletions

View File

@@ -218,6 +218,8 @@ static int find_pseudo_merge_group_for_ref(const char *refname,
c = lookup_commit(the_repository, oid);
if (!c)
return 0;
if (!packlist_find(writer->to_pack, oid))
return 0;
has_bitmap = bitmap_writer_has_bitmapped_object_id(writer, oid);
@@ -358,8 +360,10 @@ static void select_pseudo_merges_1(struct bitmap_writer *writer,
p = commit_list_append(c, p);
} while (j % group->stable_size);
bitmap_writer_push_commit(writer, merge, 1);
writer->pseudo_merges_nr++;
if (merge->parents) {
bitmap_writer_push_commit(writer, merge, 1);
writer->pseudo_merges_nr++;
}
}
/* make up to group->max_merges pseudo merges for unstable commits */
@@ -399,8 +403,9 @@ static void select_pseudo_merges_1(struct bitmap_writer *writer,
p = commit_list_append(c, p);
}
bitmap_writer_push_commit(writer, merge, 1);
writer->pseudo_merges_nr++;
if (merge->parents) {
bitmap_writer_push_commit(writer, merge, 1);
writer->pseudo_merges_nr++; }
if (end >= matches->unstable_nr)
break;
}