2016-06-28 4 views
7

Я использую теги git для ввода версий в мои программы go, например. в Makefile:Динамическая версия от git с 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] $< 

Где version определяется в main.go как:

var version = "undefined" 

Это прекрасно работает с использованием make, но не при использовании go get или go build. Есть ли способ сделать эту работу ldflags без использования внешней системы сборки (то есть с go build/go get)?

+0

Не в соответствии с документацией. Однако вы можете использовать атрибут [ident git] (https://git-scm.com/docs/gitattributes#__code_ident_code), чтобы хотя бы добавить git-хэш файла в файл. –

ответ

-1

Возможно ли следующее следующее:

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 
Смежные вопросы