3 ms·
I'm on the Gitaly team. As zegerjan wrote, Gitaly is a Go/Ruby hybrid. The main Go process doesn't use libgit2 (for now) because we didn't want to have to dea
by jacobvosmaer 9y ago
I'm on the Gitaly team.
As zegerjan wrote, Gitaly is a Go/Ruby hybrid.
The main Go process doesn't use libgit2 (for now) because we didn't want to have to deal with cgo. We already know how to deal with C extensions in Ruby, and we have a lot of existing Ruby application code that uses libgit2, so we still use it there. And that code works fine so I don't see us removing it.
In practice, sometimes spawning a Git process is faster than using libgit2, so why then not do that. Also for parts of our workload (handling Git push/pull operations), spawning a one-off process (git-upload-pack) is the most boring / tried-and-true approach.