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"
)
funcmain() {
err:=clone.Exec(context.Background(), "https://github.com/mergestat/gitutils", "some-dir")
iferr!=nil {
log.Fatal(err)
}
}package main
import (
"context""errors""fmt""io""log""os""github.com/mergestat/gitutils/gitlog"
)
funcmain() {
iter, err:=gitlog.Exec(context.TODO(), "/path/to/some/local/repo", gitlog.WithStats(false))
iferr!=nil {
log.Fatal(err)
}
for {
ifcommit, err:=iter.Next(); err!=nil {
iferrors.Is(err, io.EOF) {
break
}
log.Fatal(err)
} else {
fmt.Println(commit.SHA)
}
}
}See more examples in the examples directory.