diff options
author | Patrick Steinhardt <ps@pks.im> | 2021-04-19 11:47:06 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-04-19 21:09:11 (GMT) |
commit | 9cf68b27d50c29a0370bd61581d350b0b0a18e85 (patch) | |
tree | 3bb9369d3e084be36ed78138186f7e590cba82d9 /pack-bitmap.c | |
parent | 169a15ebd66dd23bf8c379ad33bced1578c848ef (diff) | |
download | git-9cf68b27d50c29a0370bd61581d350b0b0a18e85.zip git-9cf68b27d50c29a0370bd61581d350b0b0a18e85.tar.gz git-9cf68b27d50c29a0370bd61581d350b0b0a18e85.tar.bz2 |
rev-list: allow filtering of provided items
When providing an object filter, it is currently impossible to also
filter provided items. E.g. when executing `git rev-list HEAD` , the
commit this reference points to will be treated as user-provided and is
thus excluded from the filtering mechanism. This makes it harder than
necessary to properly use the new `--filter=object:type` filter given
that even if the user wants to only see blobs, he'll still see commits
of provided references.
Improve this by introducing a new `--filter-provided-objects` option
to the git-rev-parse(1) command. If given, then all user-provided
references will be subject to filtering.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pack-bitmap.c')
-rw-r--r-- | pack-bitmap.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/pack-bitmap.c b/pack-bitmap.c index 7ce3ede..6b790a8 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -986,7 +986,8 @@ static int can_filter_bitmap(struct list_objects_filter_options *filter) } struct bitmap_index *prepare_bitmap_walk(struct rev_info *revs, - struct list_objects_filter_options *filter) + struct list_objects_filter_options *filter, + int filter_provided_objects) { unsigned int i; @@ -1081,7 +1082,8 @@ struct bitmap_index *prepare_bitmap_walk(struct rev_info *revs, if (haves_bitmap) bitmap_and_not(wants_bitmap, haves_bitmap); - filter_bitmap(bitmap_git, wants, wants_bitmap, filter); + filter_bitmap(bitmap_git, (filter && filter_provided_objects) ? NULL : wants, + wants_bitmap, filter); bitmap_git->result = wants_bitmap; bitmap_git->haves = haves_bitmap; |