Advertisement
Advertisement
⚡ Community Insights
Discussion Sentiment
89% Positive
Analyzed from 567 words in the discussion.
Trending Topics
#git#https#filesystem#zerofs#remote#storage#repo#here#posix#similar
Discussion Sentiment
Analyzed from 567 words in the discussion.
Trending Topics
Discussion (16 Comments)Read Original on HackerNews
Not exactly the same thing, but along the same lines of "git and s3 are both object stores, why not use s3 as git storage?"
[1] https://git-annex.branchable.com
Go Git and Dulwich and friends are indeed fun tech.
ZeroFS (https://github.com/Barre/zerofs) is 9P/NFS/NBD over S3 on an LSM. Point stock go-git, or just /usr/bin/git, at a mount and skip the gymnastics. Rename is a metadata op in the keyspace, so you get it atomic on any S3, no Tigris-specific X-Tigris-Rename needed.
Different point on the spectrum, but less square-peg, also most probably much, much faster (it works great on linux-sized repos) :)
I think most of the pain documented in the article is just that git-the-implementation contains a lot of assumptions about it being a (local) filesystem that it is operating on, hence stuff like calling stat a ton of times, or doing the rename trick to get atomic behavior from a not-normally-atomic operation (updating a file in place).
If it were possible to define a "backing storage" API layer within git, it might be possible to move all the filesystem/posix-centric stuff to the other side of it and leave behind an interface that maps quite nicely to blob storage.
https://anvil.fangorn.io/fangorn/ex_git_objectstore
The documentation isn't quite correct, but it's getting there
https://repo.autonoma.ca/repo/treetrek/tree/HEAD/git