From 4832d365f1a2067c3bc464ec07b19f343ee4c495 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Thu, 9 Aug 2018 14:33:51 +1000 Subject: [PATCH] use go-git for commits --- gitcommands.go | 16 +++++++++++++++- main.go | 16 ++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/gitcommands.go b/gitcommands.go index f05e857f6..af61b22ad 100644 --- a/gitcommands.go +++ b/gitcommands.go @@ -14,6 +14,8 @@ import ( "github.com/fatih/color" "github.com/jesseduffield/gocui" gitconfig "github.com/tcnksm/go-gitconfig" + git "gopkg.in/src-d/go-git.v4" + "gopkg.in/src-d/go-git.v4/plumbing/object" ) var ( @@ -455,7 +457,19 @@ func gitCommit(g *gocui.Gui, message string) (string, error) { runSubProcess(g, "bash", "-c", "git commit -m \""+message+"\"") return "", nil } - return runDirectCommand("git commit -m \"" + message + "\"") + userName, _ := gitconfig.Global("user.name") + userEmail, _ := gitconfig.Global("user.email") + _, err := w.Commit(message, &git.CommitOptions{ + Author: &object.Signature{ + Name: userName, + Email: userEmail, + When: time.Now(), + }, + }) + if err != nil { + return err.Error(), err + } + return "", nil } func gitPull() (string, error) { diff --git a/main.go b/main.go index 94260366c..3b965b8ac 100644 --- a/main.go +++ b/main.go @@ -14,6 +14,7 @@ import ( "github.com/fatih/color" "github.com/jesseduffield/gocui" + git "gopkg.in/src-d/go-git.v4" ) // ErrSubProcess is raised when we are running a subprocess @@ -28,6 +29,8 @@ var ( date string debuggingFlag = flag.Bool("debug", false, "a boolean") versionFlag = flag.Bool("v", false, "Print the current version") + + w *git.Worktree ) func homeDirectory() string { @@ -88,6 +91,18 @@ func fallbackVersion() string { return string(byteVersion) } +func setupWorktree() { + r, err := git.PlainOpen(".") + if err != nil { + panic(err) + } + + w, err = r.Worktree() + if err != nil { + panic(err) + } +} + func main() { startTime = time.Now() devLog("\n\n\n\n\n\n\n\n\n\n") @@ -101,6 +116,7 @@ func main() { } verifyInGitRepo() navigateToRepoRootDirectory() + setupWorktree() for { if err := run(); err != nil { if err == gocui.ErrQuit {