有时候总是苦于版本的编号问题,借助于 git 版本控制中的信息可以很好的用于程序的版本识别,有了 hash 值还可以做其它事。
要点
* 借住-ldflags -X更改程序中的定义的变量的值,
* 通过 shell 命令获取当前时间 和 当前 git 项目中的 hash 值
代码如下:
package main
import (
"fmt"
"os"
)
var buildstamp string
var githash string
func main() {
println("version demo")
if len(os.Args) > 1 && (os.Args[1] == "--version" || os.Args[1] == "-v") {
fmt.Printf("build at: %s\n", buildstamp)
fmt.Printf("githash: %s\n", githash)
}
}
编译:
go build -ldflags "-X main.buildstamp `date -u '+%Y-%m-%d_%I:%M:%S%p'` -X main.githash `git rev-parse HEAD`" versionDemo.go
运行结果如下:
./versionDemo -v
version demo
build at: 2015-08-07_04:22:19PM
githash: 59b8519d5ef37e98c99aadaee6a6eab7af7faa0a