git/list[1] front-page[2] threads[3] people[4] search[5] about
wed 2026-10-07 18:08 UTC

Re: [GSoC PATCH v4 0/5] preserve promisor files content after repack

From
Lorenzo Pegorari <lorenzo.pegorari2002@gmail.com>
Date
Apr 10, 2026, 16:44 UTC
Message-ID
<adko0kvU5WX69GYQ@lorenzo-VM>
In-Reply-To
<xmqq1pgmrf4w.fsf@gitster.g>
On Fri, Apr 10, 2026 at 08:47:43AM -0700, Junio C Hamano wrote:
Show 16 quoted lines
> LorenzoPegorari <lorenzo.pegorari2002@gmail.com> writes:
> 
> > QUESTION:
> > The "CodingGuidelines" explicitly state that:
> >  "A C file must directly include the header files that declare the
> >   functions and the types it uses, except for the functions and types
> >   that are made available to it by including one of the header files
> >   it must include by the previous rule"
> > where "the previous rule" is (if I understand correctly), the one related
> > to "<git-compat-util.h>". From what I understand then, I should have
> > added an include for "strmap.h" (which is needed for `strset`), correct?
> > And if I am correct, shouldn't "strbuf.h", "hash.h", "odb.h",
> > "string-list.h" and "strvec.h" also be included?
> 
> If you are using any of the facilities declared in these header
> files in your program, yes.
Got it.
Show 17 quoted lines
> In practice many header files pull in other header files for
> definitions they themselves use.  For example, <X.h> that defines
> "struct X" may include <Y.h> for the definition of "struct Y" because
> the former embeds an instance of the latter, instead of having a pointer
> to an on-heap instance of the latter.
> 
> If you use both "struct X" and "struct Y", your program may compile
> with only <X.h> included without <Y.h> included in such a case, but
> the guideline suggests against doing so, because it should not be
> relied on.  The implementation of "struct X" may change in the
> future and stop depending on "struct Y", at which time <X.h> stops
> including <Y.h> itself, and your program would start failing to
> build, because you use "struct Y" but without including <Y.h>.
> 
> But in practice, use of strbuf is so widespread and the header is
> included in some other headers that do not need to, so your build
> may happen to work without including <strbuf.h>, for example.

Yeah, I 100% understand this. I simply found it weird that there were many missing headers, so I was scared that I was not understanding the guidelines.

I will add a 6th patch that adds these missing headers, in order to comply with the guidelines.

Thanks, Lorenzo

Previous: Lorenzo PegorariNext: Junio C Hamano
Message 49 of 79 in “preserve promisor files content after repack”
  1. 0/3 preserve promisor files content after repackLorenzoPegorari, Mar 21, 2026
  2. 1/3 pack-write: add explanation to promisor file contentLorenzoPegorari, Mar 21, 2026
  3. 2/3 pack-write: add helper to fill promisor file after repackLorenzoPegorari, Mar 21, 2026
  4. 3/3 repack-promisor: preserve content of promisor files after repackLorenzoPegorari, Mar 21, 2026
  5. Eric SunshineMar 22, 2026
  6. Lorenzo PegorariMar 22, 2026
  7. 0/4 preserve promisor files content after repackLorenzoPegorari, Mar 22, 2026
  8. 1/4 pack-write: add explanation to promisor file contentLorenzoPegorari, Mar 22, 2026
  9. 2/4 pack-write: add helper to fill promisor file after repackLorenzoPegorari, Mar 22, 2026
  10. 3/4 repack-promisor: preserve content of promisor files after repackLorenzoPegorari, Mar 22, 2026
  11. 4/4 t7700: test for promisor file content after repackLorenzoPegorari, Mar 22, 2026
  12. Eric SunshineMar 23, 2026
  13. Junio C HamanoMar 23, 2026
  14. Junio C HamanoMar 23, 2026
  15. Junio C HamanoMar 23, 2026
  16. Lorenzo PegorariMar 25, 2026
  17. Lorenzo PegorariMar 26, 2026
  18. Lorenzo PegorariMar 26, 2026
  19. Lorenzo PegorariMar 26, 2026
  20. 0/5 preserve promisor files content after repackLorenzoPegorari, Apr 6, 2026
  21. 1/5 pack-write: add explanation to promisor file contentLorenzoPegorari, Apr 6, 2026
  22. 2/5 pack-write: add helper to fill promisor file after repackLorenzoPegorari, Apr 6, 2026
  23. 3/5 repack-promisor: preserve content of promisor files after repackLorenzoPegorari, Apr 6, 2026
  24. 4/5 t7700: test for promisor file content after repackLorenzoPegorari, Apr 6, 2026
  25. 5/5 t7703: test for promisor file content after geometric repackLorenzoPegorari, Apr 6, 2026
  26. Tian YuchenApr 6, 2026
  27. Lorenzo PegorariApr 6, 2026
  28. Junio C HamanoApr 6, 2026
  29. Junio C HamanoApr 6, 2026
  30. Junio C HamanoApr 6, 2026
  31. Junio C HamanoApr 7, 2026
  32. Junio C HamanoApr 7, 2026
  33. Lorenzo PegorariApr 7, 2026
  34. Lorenzo PegorariApr 7, 2026
  35. Junio C HamanoApr 7, 2026
  36. Lorenzo PegorariApr 7, 2026
  37. Lorenzo PegorariApr 7, 2026
  38. Lorenzo PegorariApr 7, 2026
  39. Lorenzo PegorariApr 8, 2026
  40. 0/5 preserve promisor files content after repackLorenzoPegorari, Apr 10, 2026
  41. 1/5 pack-write: add explanation to promisor file contentLorenzoPegorari, Apr 10, 2026
  42. 2/5 pack-write: add helper to fill promisor file after repackLorenzoPegorari, Apr 10, 2026
  43. 3/5 repack-promisor: preserve content of promisor files after repackLorenzoPegorari, Apr 10, 2026
  44. 4/5 t7700: test for promisor file content after repackLorenzoPegorari, Apr 10, 2026
  45. 5/5 t7703: test for promisor file content after geometric repackLorenzoPegorari, Apr 10, 2026
  46. Junio C HamanoApr 10, 2026
  47. Junio C HamanoApr 10, 2026
  48. Lorenzo PegorariApr 10, 2026
  49. Lorenzo PegorariApr 10, 2026
  50. CodingGuidelines: st_mtimespec vs st_mtim vs st_mtimeJunio C Hamano, Apr 10, 2026
  51. 0/6 preserve promisor files content after repackLorenzoPegorari, Apr 10, 2026
  52. 1/6 pack-write: add explanation to promisor file contentLorenzoPegorari, Apr 10, 2026
  53. 2/6 repack-promisor add helper to fill promisor file after repackLorenzoPegorari, Apr 10, 2026
  54. 3/6 repack-promisor: preserve content of promisor files after repackLorenzoPegorari, Apr 10, 2026
  55. 4/6 t7700: test for promisor file content after repackLorenzoPegorari, Apr 10, 2026
  56. 5/6 t7703: test for promisor file content after geometric repackLorenzoPegorari, Apr 10, 2026
  57. 6/6 repack-promisor: add missing headersLorenzoPegorari, Apr 10, 2026
  58. Junio C HamanoApr 10, 2026
  59. Junio C HamanoApr 10, 2026
  60. Lorenzo PegorariApr 11, 2026
  61. Junio C HamanoApr 11, 2026
  62. Lorenzo PegorariApr 11, 2026
  63. Tian YuchenApr 11, 2026
  64. Tian YuchenApr 11, 2026
  65. Junio C HamanoApr 12, 2026
  66. Elijah NewrenApr 16, 2026
  67. Lorenzo PegorariApr 17, 2026
  68. Lorenzo PegorariApr 17, 2026
  69. Lorenzo PegorariApr 17, 2026
  70. Junio C HamanoApr 17, 2026
  71. 0/6 preserve promisor files content after repackLorenzoPegorari, Apr 18, 2026
  72. 1/6 pack-write: add explanation to promisor file contentLorenzoPegorari, Apr 18, 2026
  73. 2/6 repack-promisor add helper to fill promisor file after repackLorenzoPegorari, Apr 18, 2026
  74. 3/6 repack-promisor: preserve content of promisor files after repackLorenzoPegorari, Apr 18, 2026
  75. 4/6 t7700: test for promisor file content after repackLorenzoPegorari, Apr 18, 2026
  76. 5/6 t7703: test for promisor file content after geometric repackLorenzoPegorari, Apr 18, 2026
  77. 6/6 repack-promisor: add missing headersLorenzoPegorari, Apr 18, 2026
  78. Junio C HamanoMay 12, 2026
  79. Lorenzo PegorariMay 19, 2026

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.