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

Re: [GSoC PATCH v3 2/5] pack-write: add helper to fill promisor file after repack

From
Lorenzo Pegorari <lorenzo.pegorari2002@gmail.com>
Date
Apr 7, 2026, 22:07 UTC
Message-ID
<adWABoOqHNkTTTyR@lorenzo-VM>
In-Reply-To
<xmqq8qazai3b.fsf@gitster.g>
On Mon, Apr 06, 2026 at 02:34:32PM -0700, Junio C Hamano wrote:
Show 12 quoted lines
> LorenzoPegorari <lorenzo.pegorari2002@gmail.com> writes:
> 
> > A ".promisor" file may contain ref names (and their associated hashes)
> > that were fetched at the time the corresponding packfile was downloaded.
> > This information is used for debugging reasons. This information is
> > stored as lines structured like this: "<oid> <ref>".
> >
> > Create a `copy_promisor_content()` helper function that allows this
> > debugging info to not be lost after a `repack`, by coping it inside a new
> > ".promisor" file.
> 
> "coping" -> "copying"
Ack.
Show 26 quoted lines
> > The function logic is the following:
> >  * Take all ".promisor" files contained inside the given `repo`.
> >  * Ignore those whose name is contained inside the given `strset
> >    not_repacked_names`, which basically acts as a "promisor ignorelist"
> >    (intended to be used for packfiles that have not been repacked).
> >  * Read each line of the remaining ".promisor" files, which can be:
> >     * "<oid> <ref>" if the ".promisor" file was never repacked. If so,
> >       add the time at which the ".promisor" file was last modified <time>
> >       to the line to create the string: "<oid> <ref> <time>".
> >     * "<oid> <ref> <time>" if the ".promisor" file was repacked. If so,
> >       don't modify it.
> >  * Ignore the line if its <oid> is not present inside the
> >    "<packtmp>-<dest_hex>.idx" file.
> >  * If the destination file "<packtmp>-<dest_hex>.promisor" does not
> >    already contain the line, append it to the file.
> >
> > The function assumes that the contents of all ".promisor" files are
> > correctly formed.
> >
> > The time of last data modification is used in place of the time of file
> > creation, because the former is much easier to obtain than the latter
> > one.
> 
> The time of file creation is not recorded anywhere if you are
> dealing with the usual UNIX filesystems (ctime is not creation
> time), so it is not the issue of "easier to obtain".

That's what I found out during my researches, but I wasn't sure. Thanks for confirming it.

Show 8 quoted lines
> The reason why this design chooses to add time is because in a
> never-repacked .promisor file, the modification time of the file
> itself can be used when you compare the entries in it with entries
> in another .promisor file that did get repacked.  By having
> timestamp, the debugger can tell at which time the refs at the
> remote repository pointed at what object---the same ref may appear
> twice in the same .promisor file and having timestamps would help
> understanding what happened over time.

Exactly. I'll improve the commit message to better explain the utility of these timestamps.

Thanks, Lorenzo

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