7
Używam tagów git do wstrzykiwania wersji w moich programach go, np. w sposób Makefile
:Dynamiczna wersja z git z get get
VERSION = $(shell git describe --always --dirty)
github_pki: main.go
CGO_ENABLED=0 GOOS=linux \
go build -a \
-ldflags="-X main.version=$(VERSION)" \
-installsuffix cgo -o [email protected] $<
Gdzie version
jest zdefiniowana w main.go
jak:
var version = "undefined"
Działa to doskonale użyciu make
, ale nie przy użyciu go get
lub go build
. Czy istnieje sposób, aby ten ldflags
działał bez korzystania z zewnętrznego systemu kompilacji (tj. Z go build
/go get
)?
Nie zgodnie z dokumentacją. Jednak możesz użyć atrybutu [ident git] (https://git-scm.com/docs/gitattributes#__code_ident_code), aby dodać do pliku przynajmniej skrót mieszania git. –