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

how to (integrity) verify a whole git repo

From
Christoph Anton Mitterer <calestyo@scientia.net>
Date
Apr 21, 2020, 04:45 UTC
Message-ID
<acb9a2da98bce7ea3044cbf37c92163497f7e9e2.camel@scientia.net>
Hi.

It seems I couldn't really find any definitive answer one the following:

How to cryptographically verify the integrity of a whole git repo (i.e. all it's commits/blobs/etc. in the history?

Assume e.g. I have the kernel sources and want to do some bisection. One has also retrieved Linus' and GregKH's key via some trusted path and assumes that SHA1 is more or less still safe enough ;-)

1) Of course there is git verify-tag and verify-commit which are signed
with the GPPG, but these alone check, AFAIU, only the respective
tag/commit.
How to check everything else? Is it enough to git fsck --full?

Everything earlier in the history of a verified tag/commit should be cryptographically safe (assuming SHA1 would be still secure enough), right?

2) But this of course won't show me anything which is in the repo but
not earlier in the history of the tag/commit I've checked, right?!
Is there a way to e.g. have everything dropped which is not verifiable
via some signed commit/tag?
3) I'd assume that normal operations like checkout/bisect/etc. notice
if some SHA1 sum doesn't match. So once I've verified say kernel v.5.6
tag, I could checkout everything in the history of that and be sure it
wasn't modified, right?
But of course this wouldn't include e.g. other stable versions, like
v5.5.13.

Thanks, Chris.

Next: Jonathan Nieder
Message 1 of 7 in “how to (integrity) verify a whole git repo”
  1. Christoph Anton MittererApr 21, 2020
  2. Jonathan NiederApr 21, 2020
  3. Christoph Anton MittererApr 21, 2020
  4. Konstantin RyabitsevApr 21, 2020
  5. Christoph Anton MittererApr 23, 2020
  6. Junio C HamanoApr 21, 2020
  7. Christoph Anton MittererApr 23, 2020

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.