Re: [PATCH 2/3] prune: use bitmaps for reachability traversal

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux