underlying idea of storing git repositories in object stores is identical to https://github.com/tigrisdata/objgit
Turns out this is kind of a horrible idea in practice in ways that only really turn up when you try to square peg -> round hole as hard as I did (pushing gcc.git took multiple hours due to filesystem iops latency, turns out a thing designed for nanoseconds of latency copes poorly with a setup that has milliseconds of latency). I'm probably going to end up using the filesystem as a staging area and then have the git server asynchronously unpack git objects into individual S3 objects. I'm still not sure how to best implement merging or other git operations, but this is just kind of a hard problem in practice.