Skip to content

Use native Go git implementation rather than forking processes

We've seen a bunch of issues with Gitaly forking git processes, and I've seen a lot of work into managing cgroups and other stuff. Instead of forking processes, might it be worth considering using a native git implementation written in Go?

https://pkg.go.dev/github.com/go-git/go-git/v5

The main thing I would like to see it done for is cat-file, which this package supports.

The only major consideration here I imagine would be performance, though if that is a concern, then it may make sense to contribute performance improvements to go-git rather than continuing to fork processes.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information