如何在程序中加入項目提交的commit ID


  作為一個軟件開發工程師,相信大家經常會遇到設備上的程序有bug需要修改,但是因為程序年代太久遠或源碼分支太多,已經沒辦法知道設備上的程序是在哪一個提交里編譯出來的,這時候查問題是非常困難的。如果沒法確定設備上程序對應的代碼分支,我們能做的就是給設備升級到最新版本,如果新舊版本和設備之間是兼容的那還好辦,要是新舊版本和設備之間是不兼容,那就比較麻煩了,可能需要免費給客戶換一台新的設備。
  現在有一個方法可以避免以上的問題,那就是往gitlab編譯出來的每一個程序里寫入commit ID。這樣子就可以把程序與gitlab上的提交記錄聯系起來了,這樣子出現問題我們就可以到對應的提交記錄里看源碼,排查問題。
如何實現把commit ID寫入程序中,以下是golang語言的一個小demo

main.go

package main

import (
	"flag"
	"fmt"
	"os"
	"runtime"
)

var (
	ver         bool
	gitDescribe = "should be compiled with make."
)

func main() {
	flag.BoolVar(&ver, "v", false, "show verison info.")
	// 解析命令行參數
	flag.Parse()

	// 打印git版本、編譯環境信息
	if ver {
		fmt.Printf("%s %s\ngoVersion: %s, compiler: %s, Platform: %s\nCopyright (c) 2000-2019 Sangfor Technologies Inc.\n",
			os.Args[0], gitDescribe,
			runtime.Version(), runtime.Compiler, fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH),
		)
		return
	}
}

  Makefile

gitDescribe = $(shell git describe --dirty --always --tags)
ldflags = "-s -X main.gitDescribe=${gitDescribe} "
all:
    CGO_ENABLED=1 go build -ldflags ${ldflags} main.go

  

使用:
make 編譯成功后,用./main -v 可查看打進程序中的git commit 的縮寫哈希值


備注:可自行修改,打進程序中的哈希值要不要縮寫
git rev-parse HEAD //獲取HEAD 的commit ID
git rev-parse --short HEAD //獲取HEAD 的commit ID 哈希縮寫
git describe --dirty --always --tags //獲取commit ID 哈希的縮寫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM