I taught a bucket to speak git
This title could be clearer and more informative.Try out Clickbait Shieldfor free (5 uses left this month).
objgit is an experimental single-binary git server that stores repositories entirely in Tigris object storage — no local disk, no git binary, no database. Built using go-git (a pure-Go git implementation) and a billy filesystem abstraction layer already adapted for Tigris, the project maps git's on-disk format directly onto object storage. The post walks through the key engineering challenges: implementing atomic rename semantics (using Tigris's RenameObject extension), solving a stat-storm caused by go-git exploding packfiles into loose objects over SSH/git:// transports, fixing a distributed deadlock from EOF-never-arriving on persistent sockets, adding a local pack file cache to make clones feasible, and debugging a broken listing cache that was silently doing nothing due to chroot prefix mismatches. Post-receive hooks are sandboxed via a kefka sandbox. The result supports push/pull over HTTP, git://, and SSH, with repositories upserted on first push.
Table of contents
Git was always an object store A travesty of horrors beyond human comprehension Oh no, it works That one POSIX idiom that survived Death by a thousand stat() calls What about cloning? Why so ListObjectsV2 , Batman? Post-receive hooks go in clown jail Now what? 53.8K Impressions4 Comments