Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Go: how to add git revision to binaries built?

I want to add the current git revision number to the the binary built by go build so that I can do something like ./mybinary --revision to see which revision it is built from (usually for troubleshooting later on after deployment).

Obviously I cannot put the revision number into the source since that will change the source with a new revision.

I'm wondering if there is any other way to do this?
Or do you think this is just a bad idea? If so, what's the recommended way to establish the relation between built binaries and its source version?
Version numbers do not seem to be a good idea with a distributed version control system.

like image 545
Rio Avatar asked Mar 29 '13 21:03

Rio


1 Answers

If you can get the git revision into $VERSION and have a variable named version (type string) in your main package, you can set it during the build with:

#!/bin/sh
VERSION=`git rev-parse --short HEAD`
go build -ldflags "-X main.version=$VERSION"  myfile.go
like image 66
topskip Avatar answered Oct 21 '22 03:10

topskip