Go Reference CI Test Suite Go Report Card codecov
This is a Golang library for programmatically working with the git command (via the os/exec package).
In general, the options for working with git repositories in Go are:
go-gitis a git implementation written in pure Gogit2goare the Golang C-bindings to thelibgit2project (requires CGO)- Shelling out to the
gitcommand (using theos/execpackage) and parsing results
This library uses the 3rd option (shelling out to git) and provides an abstraction layer to simplify using the output of various git subcommands.
package main import ( "context" "log" "os" "github.com/mergestat/gitutils/clone" ) func main() { err := clone.Exec(context.Background(), "https://github.com/mergestat/gitutils", "some-dir") if err != nil { log.Fatal(err) } }
package main import ( "context" "errors" "fmt" "io" "log" "os" "github.com/mergestat/gitutils/gitlog" ) func main() { iter, err := gitlog.Exec(context.TODO(), "/path/to/some/local/repo", gitlog.WithStats(false)) if err != nil { log.Fatal(err) } for { if commit, err := iter.Next(); err != nil { if errors.Is(err, io.EOF) { break } log.Fatal(err) } else { fmt.Println(commit.SHA) } } }
See more examples in the examples directory.