Highly extensible implementation of Git protocol and storage format in Golang
go-git is is highly extensible implementation of Git protocol and storage format in Go.
It aims to reach the completeness of libgit2 or jgit, and nowadays covers the majority of the plumbing read operations and some of the main write ones, but lacks the main porcelain operations such as merges.
In its design, it has been following the open/close principle to facilitate extensions, mainly focusing the efforts on the persistence of the objects.