Как получить текущую фиксацию из git с помощью exe c .Command? - PullRequest
0 голосов
/ 09 июля 2020

У меня проблемы с борьбой 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'.
}
...