- Sources: Cursor blog post, HN discussion
- Summary: The post walks the storage designs Git hosting has used and ties each discarded one to a specific constraint. Reads inside a packfile are random walks over the object graph rather than sequential streams, which is what defeats putting repositories on a distributed filesystem. The object-level design, Shawn Pearce's JGit DHT work at Google, was discarded for a different reason, because the Git protocol requires packfiles to be sent over the network regardless of how the server stores the data, which made clone performance bad enough to abandon the design. Eventual consistency appears later in the post as a constraint on replication rather than on object storage, as the reason GitHub's Spokes keeps all replicas synchronously consistent. The post then gives the limits of Spokes and names Cursor's replacement, Continuity, which this run could not read because the fetch truncated at the start of that section.
- Why it matters: Each design is ruled out by a different property, packfile reads as random walks for the distributed filesystem and packfiles on the wire for the object store, so a reader can tell which constraint their own storage choice runs into.
- Follow-up: Read the Continuity section when the page can be fetched in full.
send feedback on this story