У меня проблемы с борьбой Go с exe c .Command (), чтобы сообщить мне текущую фиксацию моего git репозитория. Командные строки, которые работают, включают:
echo sh -c "git rev-parse --short HEAD"
sh -c "git rev-parse --short HEAD"
echo git rev-parse --short HEAD
git rev-parse --short HEAD
echo git show -s --format='%h'
git show -s --format='%h'
echo git log -1 --pretty='%h'
git log -1 --pretty='%h'
И я пробовал несколько вариантов, но не могу получить ничего, кроме жалоб от git.
package main
import (
"log"
"os"
"os/exec"
"path/filepath"
)
func main() {
log.Println("Starting lastCommit - What is the last commit ID for the current working directory?")
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}
log.Println("Current working directory (CWD): ", dir)
path, err := exec.LookPath("git")
if err != nil {
log.Fatal("installing git is in your future")
}
log.Printf("git is available at %s\n", path)
cmd := exec.Command("sh", "-c", "git rev-parse --short HEAD")
//cmd := exec.Command("sh", "-c", "git 'rev-parse --short HEAD'")
cmd.Dir = "/home/dalem/go/src/goLang/src/res"
stdoutStderr, err1 := cmd.CombinedOutput()
if err1 != nil {
log.Fatal(err1)
}
ssString := string(stdoutStderr)
log.Println("git rev-parse", ssString) // write the output with ResponseWriter
// cmd.combinedOutput() generated the following output error.
// 2020/07/09 09:32:49 git rev-parse git: 'rev-parse --short HEAD' is not a git command. See 'git --help'.
}