diff --git a/Makefile b/Makefile index 4a3e6567ff..a6eb613830 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,11 @@ ifeq ($(VERBOSE), 1) GO_OPTIONS += -v endif +GIT_COMMIT = $(shell git rev-parse --short HEAD) +GIT_STATUS = $(shell test -n "`git status --porcelain`" && echo "+CHANGES") + +BUILD_OPTIONS = -ldflags "-X main.GIT_COMMIT $(GIT_COMMIT)$(GIT_STATUS)" + SRC_DIR := $(GOPATH)/src DOCKER_DIR := $(SRC_DIR)/$(DOCKER_PACKAGE) @@ -24,7 +29,7 @@ all: $(DOCKER_BIN) $(DOCKER_BIN): $(DOCKER_DIR) @mkdir -p $(dir $@) - @(cd $(DOCKER_MAIN); go get $(GO_OPTIONS); go build $(GO_OPTIONS) -o $@) + @(cd $(DOCKER_MAIN); go get $(GO_OPTIONS); go build $(GO_OPTIONS) $(BUILD_OPTIONS) -o $@) @echo $(DOCKER_BIN_RELATIVE) is created. $(DOCKER_DIR): diff --git a/commands.go b/commands.go index 0c896f29ba..3b65ffc776 100644 --- a/commands.go +++ b/commands.go @@ -21,6 +21,8 @@ import ( const VERSION = "0.1.1" +var GIT_COMMIT string + func (srv *Server) Name() string { return "docker" } @@ -179,6 +181,7 @@ func (srv *Server) CmdWait(stdin io.ReadCloser, stdout io.Writer, args ...string // 'docker version': show version information func (srv *Server) CmdVersion(stdin io.ReadCloser, stdout io.Writer, args ...string) error { fmt.Fprintf(stdout, "Version:%s\n", VERSION) + fmt.Fprintf(stdout, "Git Commit:%s\n", GIT_COMMIT) return nil } diff --git a/docker/docker.go b/docker/docker.go index b86f110bd6..e9522ba429 100644 --- a/docker/docker.go +++ b/docker/docker.go @@ -11,6 +11,8 @@ import ( "os/signal" ) +var GIT_COMMIT string + func main() { if docker.SelfPath() == "/sbin/init" { // Running in init mode @@ -24,6 +26,7 @@ func main() { if *flDebug { os.Setenv("DEBUG", "1") } + docker.GIT_COMMIT = GIT_COMMIT if *flDaemon { if flag.NArg() != 0 { flag.Usage()