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-git
is a git implementation written in pure Gogit2go
are the Golang C-bindings to thelibgit2
project (requires CGO)- Shelling out to the
git
command (using theos/exec
package) 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.