2016-06-28 26 views
7

Tôi đang sử dụng thẻ git để chèn các phiên bản trong các chương trình đi của tôi, ví dụ: trong một Makefile:Phiên bản động từ git với 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] $< 

đâu version được định nghĩa trong main.go như:

var version = "undefined" 

này hoạt động tuyệt vời sử dụng make, nhưng không phải khi sử dụng go get hoặc go build. Có cách nào để thực hiện công việc ldflags này mà không cần sử dụng hệ thống xây dựng bên ngoài (tức là với go build/go get)?

+0

Không theo tài liệu. Tuy nhiên, bạn có thể sử dụng [thuộc tính ident git] (https://git-scm.com/docs/gitattributes#__code_ident_code) để thêm ít nhất git băm của một tệp vào tệp. –

Trả lời

-1

Bạn muốn làm gì sau đây?

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 
Các vấn đề liên quan