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

Making bit-by-bit reproducible Git Bundles?

From
Simon Josefsson <simon@josefsson.org>
Date
Mar 12, 2025, 11:40 UTC
Message-ID
<871pv2jx4a.fsf@josefsson.org>
Hi.

Thank you for the "git-archive" and "git-bundle" features, making it easier to do source-based builds in a no-Internet environment.

I have published a Git bundle of Gnulib:
https://www.gnu.org/software/gnulib/manual/html_node/Gnulib-Git-Bundle.html

As you can see at the end, I struggle to come up with a recipe to allow others to reproduce the git bundle that I created.

If I run the recipe above twice (including the clone), I get different checksums. This even if nothing was committed in the remote repository meanwhile.

Is it possible to create a bit-by-bit reproducible git bundle using some other set of commands? If so, how? I'm using git 2.48.1 from Guix.

Can anyone explain what is causing the irreproducibility? Running diffoscope is not helpful, since the bundle is compressed and diffoscope doesn't seem to know how to untangle it.

If this is not possible today, what do you think about changes to make this work?

Thanks, /Simon

Next: Junio C Hamano
Message 1 of 11 in “Making bit-by-bit reproducible Git Bundles?”
  1. Simon JosefssonMar 12, 2025
  2. Junio C HamanoMar 12, 2025
  3. Kyle LippincottMar 13, 2025
  4. Simon JosefssonMar 13, 2025
  5. Jeff KingMar 13, 2025
  6. Junio C HamanoMar 13, 2025
  7. Simon JosefssonMar 13, 2025
  8. Kyle LippincottMar 13, 2025
  9. Junio C HamanoMar 13, 2025
  10. Jeff KingMar 14, 2025
  11. rsbecker@nexbridge.comMar 14, 2025

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.