From 2a9806bfc64c2b9fe2027fb6b7bd1844c0cac365 Mon Sep 17 00:00:00 2001 From: Mura Li Date: Wed, 17 Apr 2019 19:11:37 +0800 Subject: [PATCH] Pre-calculate the absolute path of git (#6575) * Pre-caculate the absolute path of git * Do not repeat string literals which has been defined somewhere Also make it flexible to accept customized/user-defined value. --- modules/git/command.go | 2 +- modules/git/git.go | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/git/command.go b/modules/git/command.go index d354635119..3602717702 100644 --- a/modules/git/command.go +++ b/modules/git/command.go @@ -41,7 +41,7 @@ func NewCommand(args ...string) *Command { cargs := make([]string, len(GlobalCommandArgs)) copy(cargs, GlobalCommandArgs) return &Command{ - name: "git", + name: GitExecutable, args: append(cargs, args...), } } diff --git a/modules/git/git.go b/modules/git/git.go index 150b80fb07..abae0423c2 100644 --- a/modules/git/git.go +++ b/modules/git/git.go @@ -7,6 +7,7 @@ package git import ( "fmt" + "os/exec" "strings" "time" @@ -26,6 +27,10 @@ var ( Prefix = "[git-module] " // GitVersionRequired is the minimum Git version required GitVersionRequired = "1.7.2" + + // GitExecutable is the command name of git + // Could be updated to an absolute path while initialization + GitExecutable = "git" ) func log(format string, args ...interface{}) { @@ -71,6 +76,12 @@ func BinVersion() (string, error) { } func init() { + absPath, err := exec.LookPath(GitExecutable) + if err != nil { + panic(fmt.Sprintf("Git not found: %v", err)) + } + GitExecutable = absPath + gitVersion, err := BinVersion() if err != nil { panic(fmt.Sprintf("Git version missing: %v", err))