簡體   English   中英

如何在 android.go 中解析 git 提交 id

[英]How to parse git commit id in android .go

作為標題,我嘗試調用

cmd := exec.Command(commit_id, "=", "$(git rev-parse --short HEAD)")
cmd.Run()
fmt.Println("commit_id = ", commit_id);

但結果是 null。 有人知道如何解析 git commit-id 嗎? 謝謝!

這是一個示例。

package main

import (
    "bytes"
    "fmt"
    "os/exec"
)

func main() {
    var commitid string
    var sout, serr bytes.Buffer
    cmd := exec.Command("git", "rev-parse", "--short", "HEAD")
    cmd.Stdout = &sout
    cmd.Stderr = &serr
    err := cmd.Run()
    if err != nil {
        fmt.Println(serr.String())
    } else {
        commitid = sout.String()
        fmt.Println("commit_id =", commitid)
    }
}

我是 Golang 的新手。 代碼可能會更好。 我按照命令中的示例進行操作,似乎它是這樣工作的。

將以下代碼另存為commit_hash.go

import (
    "bytes"
    "fmt"
    "os"
    "os/exec"
)

func main() {
    commit, err := commitHash()
    if err != nil {
        fmt.Printf("\x1b[31;1m%s\x1b[0m\n", fmt.Sprintf("error: %s", err))
        os.Exit(1)
    }
    fmt.Printf("commit_id=%s", commit)
}

func commitHash() (string, error) {
    cmd := exec.Command("git", "rev-parse", "--short", "HEAD")
    var stdout, stderr bytes.Buffer
    cmd.Stdout = &stdout
    cmd.Stderr = &stderr
    if err := cmd.Run(); err != nil {
        return "", fmt.Errorf("%w; %s", err, stderr.String())
    }
    return stdout.String(), nil
}

然后從您的 git 存儲庫運行它:

go run commit_hash.go

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM