![](/img/trans.png)
[英]How to check if current Android apk is generated from provided git commit?
[英]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.