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

Re: [PATCH 3/5] fetch-pack: introduce `fetch_pack_options`

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 22, 2024, 01:46 UTC
Message-ID
<xmqqjzcwca74.fsf@gitster.g>
In-Reply-To
<20241121204119.1440773-4-jltobler@gmail.com>
Justin Tobler <jltobler@gmail.com> writes:
Show 10 quoted lines
> When `fetch_pack_config()` is invoked, fetch-pack configuration is
> parsed from the config. As part of this operation, fsck message severity
> configuration is assigned to the `fsck_msg_types` global variable. This
> is optionally used to configure the downstream git-index-pack(1) when
> the `--strict` option is specified.
>
> In a subsequent commit, the same fetch-pack fsck message configuration
> needs to be reused. To facilitate this, introduce `fetch_pack_options`
> which gets written to during the `fetch_pack_config_cb()` instead of
> directly modifying the `fsck_msg_types` global.

It is unclear how it facilitates to replace one global with another global that has the data that was previously global as one of its members. With the above I was somehow expecting that the option struct instance is allocated on the stack of a function common to both callers of the configuration reader (i.e. fetch_pack_config()) as well as the configuration user (i.e. get_pack()). If we were to allow the latter to keep accessing the global (which is perfectly fine), wouldn't it be sufficient for the purpose of this series (which I am imagining wants to call fetch_pack_config() from the sideways and grab what came from the configuration) to just pass the fsck_msg_types strbuf through the call chain of the reaading side?

That is,
 - fetch_pack_config()'s current callers pass the address of
   fsck_msg_types to a new parameter.
 - fetch_pack_config() passes that new parameter when calling
   git_config();
 - fetch_pack_config_cb() uses the cb parameter and stuff its
   findings there;
 - a third-party caller calls fetch_pack_config() with its own
   fsck_msg_types instance (presumably in this series, it would be
   the opts.fsck_msg_types member introduced earlier in the bundle
   code).
or something like that?

So, the reason for existence of the shell around the fsck_msg_types needs to be explained. It is perfectly fine to say "we'll add THIS THING in a later step", if that were the case, but a reviewer tends to start reading from the front, so the presentation order matters.

Leaving many questions unsolved tangling may be a good way to keep readers engaged when writing a mystery novel, but not a patch series. Having to keep too many things in head, especially when many of them are not explained well (hence raises "why should I keep these in my head?" question), is another distraction and discourages the reviewers from reading further on.

Assuming that the shell structure is necessary around it, the code changes in this patch looks sensible to me.

Thanks.
Previous: Justin ToblerNext: Junio C Hamano
Message 12 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.