Git on object storage only works if you rebuild packfiles
You can run Git on object storage if you re-make packfiles
Tigris engineer built an open-source Git server backed by object storage. The initial filesystem shim failed on real-world repositories because Git packfiles assume local disk and mmap. The fix: a custom object-storage-native packfile format with a columnar index and fixed-width records, enabling precise HTTP Range requests without client-side changes. The approach now handles production-sized repositories like the Linux kernel, which packs 11.8 million objects into a single 3.4 GiB packfile.
Filesystem reads in that case are 10 nanoseconds at most (the filesystem cache helps so much here) but doing any network roundtrip is 10 milliseconds at minimum. It’s at least a million times slower because of how reality works.
- andrewaylett
`git update-server-info` is your friend; it generates the auxiliary files needed to allow clients to make range requests against packs.
For example: https://andrewaylett.github.io/rgitweb/ is a repository viewer that runs against a static git repo. It doesn't care what you're storing the pack in, just that the data is there to make the right range requests.
- delf
This is exactly what GitSocial does: https://gitsocial.org/. Plus it can generate static sites for repositories, letting you serve it all from a bucket.
- flowingfocus
I recently found https://github.com/enroute-sh/enroute which also does git on object storage
I found the idea of a git-proxy interesting where you start with proxying an existing forge and then later adopt the object storage backend
- 0bytes
4th submission in 3 days. Is this a marketing spam campaign?
- pierrebarre
Or just use https://github.com/Barre/ZeroFS
Works pretty awesomely with git workloads, even Linux sized trees.