Re: [PATCH 06/10] reftable/generic: move generic iterator code into iterator interface

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

 



Junio C Hamano <gitster@xxxxxxxxx> writes:

> karthik nayak <karthik.188@xxxxxxxxx> writes:
>
>> Seems like the CI caught it too [1].
>>
>>> +	it->ops->close(it->iter_arg);
>>> +	it->ops = NULL;
>>> +	FREE_AND_NULL(it->iter_arg);
>>> +}
>>> +
>>
>> [snip]
>>
>> [1]: https://gitlab.com/gitlab-org/git/-/jobs/7563308943
>
> Looking at it, the suggestions the CI job makes look hit-and-miss.
>

Yup, this is kinda what I was expecting and why I also wanted it to be
allowed to fail. So we have data points on what we should change to make
it better.

> For examle, this one
>
> -static int stack_compact_range_stats(struct reftable_stack *st,
> -				     size_t first, size_t last,
> +static int stack_compact_range_stats(struct reftable_stack *st, size_t first,
> +				     size_t last,
>  				     struct reftable_log_expiry_config *config,
>  				     unsigned int flags)
>
> is a degradation of readability.  "first" and "last" pretty
> much act as a pair and they read better sitting together next to
> each other.  The rewrite is reducing neither the total number of
> lines or the maximum column width.
>

Totally agreed, This is set by `ColumnLimit: 80` and I think most of the
misses I see are because of this. This works with the `Penalties` we set
at the bottom. We need to see what combination works best for us since
our focus would be more on the readability front.

> But this one
>
> -static void write_n_ref_tables(struct reftable_stack *st,
> -			       size_t n)
> +static void write_n_ref_tables(struct reftable_stack *st, size_t n)
>
> is certainly an improvement.
>
> This one
>
>  	struct reftable_record rec = {
>  		.type = BLOCK_TYPE_REF,
> -		.u = {
> -			.ref = *ref
> -		},
> +		.u = { .ref = *ref },
>  	};
>
> is hard to generalize but in this case it made a good suggestion.
>
> If we _expect_ that we will enumerate more members of .u, then the
> way originally written (plus trailing comma after the ".ref = *ref")
> would be easier to maintain.  But since .u is a union, we won't be
> choosing more than one member to initialize by definition, so what
> was suggested by the check-style linter is certainly much better.
>
> Thanks.

Yup these two do look much nicer indeed. There are weird bugs in
clang-format however and I was able to fool it to accept

	struct reftable_record rec = {
		.type = BLOCK_TYPE_REF,
		.u = {
			.ref = *ref },
	};

But this could also be an issue with our config too.

I'll try playing around for an hour today to see if I can find some
improvements we can make to the formatter config.

Thanks

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