package git import ( "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing/object" "github.com/sirupsen/logrus" ) // Init inits a new repo and commits all the stuff if you want func Init(repoPath string, commit bool, gitUser, gitEmail string) error { if _, err := git.PlainInit(repoPath, false); err != nil { logrus.Fatal(err) } logrus.Debugf("initialised new git repo in %s", repoPath) if commit { commitRepo, err := git.PlainOpen(repoPath) if err != nil { logrus.Fatal(err) } commitWorktree, err := commitRepo.Worktree() if err != nil { logrus.Fatal(err) } if err := commitWorktree.AddWithOptions(&git.AddOptions{All: true}); err != nil { return err } var author *object.Signature if gitUser != "" && gitEmail != "" { author = &object.Signature{Name: gitUser, Email: gitEmail} } if _, err = commitWorktree.Commit("init", &git.CommitOptions{Author: author}); err != nil { return err } logrus.Debugf("init committed all files for new git repo in %s", repoPath) } return nil }