On 2/13/2019 11:37 PM, Jeff King wrote:
> +static void *lookup_object_by_type(struct repository *r,
> +                                const struct object_id *oid,
> +                                enum object_type type)
> +{
> +     switch (type) {
> +     case OBJ_COMMIT:
> +             return lookup_commit(r, oid);
> +     case OBJ_TREE:
> +             return lookup_tree(r, oid);
> +     case OBJ_TAG:
> +             return lookup_tag(r, oid);
> +     case OBJ_BLOB:
> +             return lookup_blob(r, oid);
> +     default:
> +             die("BUG: unknown object type %d", type);
> +     }
> +}
> +
> +static int mark_object_seen(const struct object_id *oid,
> +                          enum object_type type,
> +                          int exclude,
> +                          uint32_t name_hash,
> +                          struct packed_git *found_pack,
> +                          off_t found_offset)
> +{
> +     struct object *obj = lookup_object_by_type(the_repository, oid, type);
> +     if (!obj)
> +             die("unable to create object '%s'", oid_to_hex(oid));
> +
> +     obj->flags |= SEEN;
> +     return 0;
> +}
> +
>  void mark_reachable_objects(struct rev_info *revs, int mark_reflog,
>                           timestamp_t mark_recent, struct progress *progress)
>  {
>       struct connectivity_progress cp;
> +     struct bitmap_index *bitmap_git;
>  
>       /*
>        * Set up revision parsing, and mark us as being interested
> @@ -188,6 +223,13 @@ void mark_reachable_objects(struct rev_info *revs, int 
> mark_reflog,
>       cp.progress = progress;
>       cp.count = 0;
>  
> +     bitmap_git = prepare_bitmap_walk(revs);
> +     if (bitmap_git) {
> +             traverse_bitmap_commit_list(bitmap_git, mark_object_seen);
> +             free_bitmap_index(bitmap_git);
> +             return;
> +     }
> +

Peff,

This block after "if (bitmap_git)" is not exercised by the (non-performance)
test suite, so the rest of the code above is not tested, either. Could a test
of this "prune" capability be added to the regression tests around the bitmaps?

Thanks,
-Stolee

Reply via email to