git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/5] bundle: add bundle verification options type

From
Justin Tobler <jltobler@gmail.com>
Date
Nov 22, 2024, 15:22 UTC
Message-ID
<o22ukwk2b6pewcz4t4coplhu3nnygrlescyko6hj33ak2yynx2@zkq4oa3pnguw>
In-Reply-To
<xmqqy11ccbco.fsf@gitster.g>
On 24/11/22 10:21AM, Junio C Hamano wrote:
Show 28 quoted lines
> Justin Tobler <jltobler@gmail.com> writes:
> 
> > diff --git a/bundle-uri.c b/bundle-uri.c
> > index 0df66e2872..ed3afcaeb3 100644
> > --- a/bundle-uri.c
> > +++ b/bundle-uri.c
> > @@ -361,12 +361,16 @@ static int copy_uri_to_file(const char *filename, const char *uri)
> >  
> >  static int unbundle_from_file(struct repository *r, const char *file)
> >  {
> > -	int result = 0;
> > -	int bundle_fd;
> > +	struct verify_bundle_opts opts = {
> > +		.flags = VERIFY_BUNDLE_QUIET |
> > +			 (fetch_pack_fsck_objects() ? VERIFY_BUNDLE_FSCK : 0)
> > +	};
> >  	struct bundle_header header = BUNDLE_HEADER_INIT;
> > -	struct string_list_item *refname;
> >  	struct strbuf bundle_ref = STRBUF_INIT;
> > +	struct string_list_item *refname;
> >  	size_t bundle_prefix_len;
> > +	int result = 0;
> > +	int bundle_fd;
> 
> Unrelated changes to reorder the lines, without any justification
> worth describing in the proposed commit log message, distracts and
> discourages the reviewers from reading further on.  I would avoid
> making such changes if I were doing this patch.

Thanks for the feedback. I'll revert the unnecessary changes in the next version and avoid doing this in the future.

Show 19 quoted lines
> > -int unbundle(struct repository *r, struct bundle_header *header,
> > -	     int bundle_fd, struct strvec *extra_index_pack_args,
> > -	     enum verify_bundle_flags flags)
> > +int unbundle(struct repository *r, struct bundle_header *header, int bundle_fd,
> > +	     struct strvec *extra_index_pack_args,
> > +	     struct verify_bundle_opts *_opts)
> 
> Again, unrelated rewrapping of lines distracts and discourages the
> reviewers from reading further on.  It looked as if the patch is
> adding an extra parameter, until I read it again.
> 
> The real change here is that the enum is replaced with a struct that
> has the same enum as one of its members, which is good.
> 
> Name the external-facing one (like this new parameter) _without_
> funnies, and call it straight "opts".  The internal stand-in object
> you create below can use funny convention but using "_" as prefix is
> usually for system stuff (and the language standard forbids it, even
> though people often do so in practice, from programs).

Good to know, I saw this pattern used in the reftable library. I'll update per your suggestion in the next version.

Show 19 quoted lines
> >  {
> >  	struct child_process ip = CHILD_PROCESS_INIT;
> > +	struct verify_bundle_opts opts = { 0 };
> >  
> > -	if (verify_bundle(r, header, flags))
> > +	if (_opts)
> > +		opts = *_opts;
> > +
> > +	if (verify_bundle(r, header, opts.flags))
> >  		return -1;
> 
> This is an arrangement that looks strange, especially at this stage
> of the series without reading the rest.  If verify_bundle() takes
> the enum and not &opts, there is no need for stand-in opts struct.
> You can have a local enum "flags" that is initialized to 0 and only
> when parameter "opts" is not NULL, assign opts->flags to it and use
> it throughout the rest of the function.  Reviewers will be left
> confused wondering why the patch does this in an unnecessarily more
> complex way by using an extra structure instance.

Good point, at this point in the series its not obvious why the added compexity is good or worth it. I'll defer making this change to the following patch in the next version.

> 
> Until you start needing other fields of opts in the function,
> perhaps in a later step, that is.

Ya, this is its intent. Having a default options to fallback to is more useful once there are other fields present.

-Justin
Previous: Junio C HamanoNext: Patrick Steinhardt
Message 4 of 41 in “propagate fsck message severity for bundle fetch”
  1. 0/5 propagate fsck message severity for bundle fetchJustin Tobler, Nov 21, 2024
  2. 1/5 bundle: add bundle verification options typeJustin Tobler, Nov 21, 2024
  3. Junio C HamanoNov 22, 2024
  4. Justin ToblerNov 22, 2024
  5. Patrick SteinhardtNov 26, 2024
  6. Justin ToblerNov 26, 2024
  7. 2/5 bundle: support fsck message configurationJustin Tobler, Nov 21, 2024
  8. Junio C HamanoNov 22, 2024
  9. Justin ToblerNov 22, 2024
  10. Junio C HamanoNov 25, 2024
  11. 3/5 fetch-pack: introduce `fetch_pack_options`Justin Tobler, Nov 21, 2024
  12. Junio C HamanoNov 22, 2024
  13. Junio C HamanoNov 22, 2024
  14. Justin ToblerNov 22, 2024
  15. 4/5 fetch-pack: expose `fetch_pack_config_cb()`Justin Tobler, Nov 21, 2024
  16. Junio C HamanoNov 22, 2024
  17. Justin ToblerNov 22, 2024
  18. shejialuoNov 22, 2024
  19. Justin ToblerNov 27, 2024
  20. 5/5 transport: propagate fsck configuration during bundle fetchJustin Tobler, Nov 21, 2024
  21. Junio C HamanoNov 22, 2024
  22. 0/4 propagate fsck message severity for bundle fetchJustin Tobler, Nov 27, 2024
  23. 1/4 bundle: add bundle verification options typeJustin Tobler, Nov 27, 2024
  24. 2/4 bundle: support fsck message configurationJustin Tobler, Nov 27, 2024
  25. Patrick SteinhardtNov 27, 2024
  26. 3/4 fetch-pack: split out fsck config parsingJustin Tobler, Nov 27, 2024
  27. Patrick SteinhardtNov 27, 2024
  28. Justin ToblerNov 27, 2024
  29. 4/4 transport: propagate fsck configuration during bundle fetchJustin Tobler, Nov 27, 2024
  30. Junio C HamanoNov 27, 2024
  31. 0/4 propagate fsck message severity for bundle fetchJustin Tobler, Nov 27, 2024
  32. 1/4 bundle: add bundle verification options typeJustin Tobler, Nov 27, 2024
  33. 2/4 bundle: support fsck message configurationJustin Tobler, Nov 27, 2024
  34. 3/4 fetch-pack: split out fsck config parsingJustin Tobler, Nov 27, 2024
  35. Junio C HamanoNov 28, 2024
  36. Patrick SteinhardtDec 3, 2024
  37. Justin ToblerDec 3, 2024
  38. Patrick SteinhardtDec 3, 2024
  39. Junio C HamanoDec 3, 2024
  40. Junio C HamanoDec 4, 2024
  41. 4/4 transport: propagate fsck configuration during bundle fetchJustin Tobler, Nov 27, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.