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.

17m read timeFrom tigrisdata.com
Post cover image
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