2016-06-28 11 views
7

Ich verwende Git-Tags, um Versionen in meine Go-Programme, z. in ein Makefile:Dynamische Version von Git mit go 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] $< 

Wo version in main.go wie folgt definiert ist:

var version = "undefined" 

make Dies funktioniert gut mit, aber nicht, wenn go get oder go build verwenden. Gibt es eine Möglichkeit, diese ldflags ohne Verwendung eines externen Build-System (d. H. Mit go build/go get) arbeiten zu lassen?

+0

Nicht gemäß der Dokumentation. Sie können jedoch das Attribut [ident git] (https://git-scm.com/docs/gitattributes#__code_ident_code) verwenden, um zumindest den Git-Hash einer Datei in die Datei einzufügen. –

Antwort

-1

Ist das folgende was Sie wollen?

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