2016-06-28 33 views
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)?

+0

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. –

Odpowiedz

-1

Czy chcesz:

VERSION=`git describe --always --dirty`; \ 
    CGO_ENABLED=0 GOOS=linux \ 
    go build -a \ 
     -ldflags="-X main.version=$(VERSION)" \ 
     -installsuffix cgo -o github_pki main.go