[GSoC PATCH v5 0/6] preserve promisor files content after repack
- From
LorenzoPegorari <lorenzo.pegorari2002@gmail.com>
- Date
- Apr 10, 2026, 22:54 UTC
- Message-ID
- <cover.1775861047.git.lorenzo.pegorari2002@gmail.com>
- In-Reply-To
- <cover.1775832056.git.lorenzo.pegorari2002@gmail.com>
The goal of this patch is to solve the NEEDSWORK comment added by 5374a290 (fetch-pack: write fetched refs to .promisor, 14/10/2019). This is done by adding a helper function that takes the content of all .promisor files in the `repository`, and copies it inside the first .promisor file created by the repack.
Also, I added a comment explaining what is the purpose of the content of the .promisor files, since this wasn't explained anywhere (I found information regarding this only in the message of the previously cited commit).
Finally, I added some tests to "t7700-repack.sh" and "t7703-repack-geometric.sh" that check if the content of .promisor files are correctly copied into the .promisor files created by a repack.
If Eric Sunshine, Tian Yuchen (for the patch 2/5 "pack-write: add helper to fill promisor file after repack") and Junio Hamano (for all patches) want to be added with a `<Reviewed-by>` tag, please let me know (and, of course, thanks a lot for the help)!
V5 DIFF: * fixed commit message (from `pack-write:` to `repack-promisor:`). * fixed timestamp `fprintf()` format.
LorenzoPegorari (6): pack-write: add explanation to promisor file content repack-promisor add helper to fill promisor file after repack repack-promisor: preserve content of promisor files after repack t7700: test for promisor file content after repack t7703: test for promisor file content after geometric repack repack-promisor: add missing headers
Documentation/git-repack.adoc | 4 +- pack-write.c | 9 ++ repack-promisor.c | 152 +++++++++++++++++++++++++++++++--- t/t7700-repack.sh | 60 ++++++++++++++ t/t7703-repack-geometric.sh | 33 ++++++++ 5 files changed, 243 insertions(+), 15 deletions(-)
Range-diff against v4:
1: b4990fcdf0 = 1: b4990fcdf0 pack-write: add explanation to promisor file content
2: 34c4e79311 ! 2: 3558bb3895 pack-write: add helper to fill promisor file after repack
@@ Metadata
Author: LorenzoPegorari <lorenzo.pegorari2002@gmail.com>
## Commit message ##
- pack-write: add helper to fill promisor file after repack
+ repack-promisor add helper to fill promisor file after repack
A ".promisor" file may contain ref names (and their associated hashes)
that were fetched at the time the corresponding packfile was downloaded.
@@ repack-promisor.c: static int write_oid(const struct object_id *oid,
+
+ /* If <time> doesn't exist, retrieve it and add it to line */
+ if (line_sections.nr < 3)
-+ strbuf_addf(&line, " %lld", (long long int)source_stat.st_mtim.tv_sec);
++ strbuf_addf(&line, " %" PRItime, (timestamp_t)source_stat.st_mtime);
+
+ /*
+ * Add the finalized line to dest_to_write and dest_content if it
3: 72ef2378b9 = 3: b483be7558 repack-promisor: preserve content of promisor files after repack
4: 0aceaed480 = 4: f631993c89 t7700: test for promisor file content after repack
5: d9f6341481 = 5: ab307e68fe t7703: test for promisor file content after geometric repack
-: ---------- > 6: e8720aaf12 repack-promisor: add missing headers-- 2.53.0.584.ge8720aaf12