Re: [PATCH v2 03/10] builtin/cat-file: support "blob:none" objects filter

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

 



Karthik Nayak <karthik.188@xxxxxxxxx> writes:

> Patrick Steinhardt <ps@xxxxxx> writes:
>
>> Implement support for the "blob:none" filter in git-cat-file(1), which
>> causes us to omit all blobs.
>>
>> Signed-off-by: Patrick Steinhardt <ps@xxxxxx>
>> ---
>>  Documentation/git-cat-file.adoc |  2 ++
>>  builtin/cat-file.c              | 11 ++++++++++-
>>  t/t1006-cat-file.sh             | 33 +++++++++++++++++++++++++++++++--
>>  3 files changed, 43 insertions(+), 3 deletions(-)
>>
>> diff --git a/Documentation/git-cat-file.adoc b/Documentation/git-cat-file.adoc
>> index f7f57b7f538..bb32f715944 100644
>> --- a/Documentation/git-cat-file.adoc
>> +++ b/Documentation/git-cat-file.adoc
>> @@ -86,6 +86,8 @@ OPTIONS
>>  	Omit objects from the list of printed objects. This can only be used in
>>  	combination with one of the batched modes. The '<filter-spec>' may be
>>  	one of the following:
>> ++
>> +The form '--filter=blob:none' omits all blobs.
>>
>>  --path=<path>::
>>  	For use with `--textconv` or `--filters`, to allow specifying an object
>> diff --git a/builtin/cat-file.c b/builtin/cat-file.c
>> index 940900d92ad..e783dbbad58 100644
>> --- a/builtin/cat-file.c
>> +++ b/builtin/cat-file.c
>> @@ -472,7 +472,8 @@ static void batch_object_write(const char *obj_name,
>>  	if (!data->skip_object_info) {
>>  		int ret;
>>
>> -		if (use_mailmap)
>> +		if (use_mailmap ||
>> +		    opt->objects_filter.choice == LOFC_BLOB_NONE)
>>  			data->info.typep = &data->type;
>>
>
> I didn't understand why we need to do this, below we only check for
> `data->type`. The only other place we use `data->info.typep` going
> forward seems to be `print_object_or_die()`, but that flow is only
> followed for `opt->batch_mode == BATCH_MODE_CONTENTS`. We already have
>
>     if (opt->batch_mode == BATCH_MODE_CONTENTS)
> 		data.info.typep = &data.type;
>
> in `batch_objects()` before this, shouldn't that cover this scenario
> too? Maybe we can add a comment with the reasoning
>
> [snip]

After playing around more, I understand now, we set the pointer
`data->info.typep` to point to `data->type`, so when the data is parsed
in `packed_object_info()` or `oid_object_info_extended()`, that
information would be set into `data->type`. So we can skip as needed.

All good here!

Attachment: signature.asc
Description: PGP signature


[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