With a code like this:
package main
import "fmt"
var (
version = "dev"
commit = "n/a"
date = "n/a"
)
func main() {
fmt.Printf("%s, %s, %s\n", version, commit, date)
}
You can run a command like this:
go build --ldflags "-X 'main.version=$(git describe --tags)' -X 'main.date=$(date +%F)' -X 'main.commit=$(git rev-parse HEAD)'" app.go