diff options
author | Jan Lehnardt <jan@apache.org> | 2018-07-13 14:26:43 +0200 |
---|---|---|
committer | Jan Lehnardt <jan@apache.org> | 2018-07-17 08:44:33 +0200 |
commit | 79eb1afc8e2c11d3ae1a71057656af05a541fffe (patch) | |
tree | bc2b7f837dda48dac684f3c9778f38c944754ede | |
parent | 3acf15f7f16e09d50eb96a99893f3cbe7a9d2d1d (diff) | |
download | couchdb-79eb1afc8e2c11d3ae1a71057656af05a541fffe.tar.gz |
Report git sha on welcome request
Closes #1309
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | Makefile.win | 6 | ||||
-rwxr-xr-x | build-aux/couchdb-build-release.sh | 6 | ||||
-rw-r--r-- | src/chttpd/src/chttpd_misc.erl | 1 | ||||
-rw-r--r-- | src/chttpd/test/chttpd_welcome_test.erl | 2 | ||||
-rw-r--r-- | src/couch/rebar.config.script | 8 | ||||
-rw-r--r-- | src/couch/src/couch_server.erl | 3 |
7 files changed, 26 insertions, 6 deletions
@@ -13,6 +13,7 @@ include version.mk REBAR?=$(shell echo `pwd`/bin/rebar) +COUCHDB_GIT_SHA=$(git_sha) IN_RELEASE = $(shell if [ ! -d .git ]; then echo true; fi) ifeq ($(IN_RELEASE), true) COUCHDB_VERSION = $(vsn_major).$(vsn_minor).$(vsn_patch) @@ -22,8 +23,9 @@ IN_RC = $(shell git describe --tags --always --first-parent \ | grep -Eo -- '-RC[0-9]+' 2>/dev/null) RELTAG = $(shell git describe --dirty --abbrev=0 --tags --always --first-parent \ | grep -Eo '^[0-9]+\.[0-9]\.[0-9]+') +COUCHDB_GIT_SHA=$(shell git rev-parse --short --verify HEAD) ifeq ($(RELTAG),) -COUCHDB_VERSION_SUFFIX = $(shell git rev-parse --short --verify HEAD) +COUCHDB_VERSION_SUFFIX = $(COUCHDB_GIT_SHA) COUCHDB_VERSION = $(vsn_major).$(vsn_minor).$(vsn_patch)-$(COUCHDB_VERSION_SUFFIX) else COUCHDB_VERSION = $(RELTAG) @@ -82,7 +84,7 @@ help: .PHONY: couch # target: couch - Build CouchDB core, use ERL_OPTS to provide custom compiler's options couch: config.erl - @COUCHDB_VERSION=$(COUCHDB_VERSION) $(REBAR) compile $(COMPILE_OPTS) + @COUCHDB_VERSION=$(COUCHDB_VERSION) COUCHDB_GIT_SHA=$(COUCHDB_GIT_SHA) $(REBAR) compile $(COMPILE_OPTS) @cp src/couch/priv/couchjs bin/ diff --git a/Makefile.win b/Makefile.win index 5a2a73ab1..7cf3cfac5 100644 --- a/Makefile.win +++ b/Makefile.win @@ -14,12 +14,14 @@ include version.mk SHELL=cmd.exe REBAR?=$(shell where rebar.cmd) +COUCHDB_GIT_SHA=$(git_sha) IN_RELEASE = $(shell if not exist .git echo true) ifeq ($(IN_RELEASE), true) COUCHDB_VERSION_SUFFIX= COUCHDB_VERSION = $(vsn_major).$(vsn_minor).$(vsn_patch) else -COUCHDB_VERSION_SUFFIX = -$(shell git rev-parse --short --verify HEAD) +COUCHDB_GIT_SHA=$(shell git rev-parse --short --verify HEAD) +COUCHDB_VERSION_SUFFIX = -$(COUCHDB_GIT_SHA) COUCHDB_VERSION = $(vsn_major).$(vsn_minor).$(vsn_patch)$(COUCHDB_VERSION_SUFFIX) endif @@ -53,7 +55,7 @@ all: couch fauxton docs .PHONY: couch # target: couch - Build CouchDB core couch: config.erl - @set COUCHDB_VERSION=$(COUCHDB_VERSION) && $(REBAR) compile + @set COUCHDB_VERSION=$(COUCHDB_VERSION) && set COUCHDB_GIT_SHA=$(COUCHDB_GIT_SHA) && $(REBAR) compile @copy src\couch\priv\couchjs.exe bin diff --git a/build-aux/couchdb-build-release.sh b/build-aux/couchdb-build-release.sh index 4482b713c..2d219e5e4 100755 --- a/build-aux/couchdb-build-release.sh +++ b/build-aux/couchdb-build-release.sh @@ -35,8 +35,12 @@ done cd .. -# create CONTRIBUTORS file + if test -e .git; then + # save git sha in version.mk + git_sha=`git rev-parse --short HEAD` + echo "git_sha=$git_sha" >> $RELDIR/version.mk + # create CONTRIBUTORS file OS=`uname -s` case "$OS" in Linux|CYGWIN*) # GNU sed diff --git a/src/chttpd/src/chttpd_misc.erl b/src/chttpd/src/chttpd_misc.erl index 95345d42b..596e0142b 100644 --- a/src/chttpd/src/chttpd_misc.erl +++ b/src/chttpd/src/chttpd_misc.erl @@ -49,6 +49,7 @@ handle_welcome_req(#httpd{method='GET'}=Req, WelcomeMessage) -> send_json(Req, {[ {couchdb, WelcomeMessage}, {version, list_to_binary(couch_server:get_version())}, + {git_sha, list_to_binary(couch_server:get_git_sha())}, {features, config:features()} ] ++ case config:get("vendor") of [] -> diff --git a/src/chttpd/test/chttpd_welcome_test.erl b/src/chttpd/test/chttpd_welcome_test.erl index af9732f57..b737abd7a 100644 --- a/src/chttpd/test/chttpd_welcome_test.erl +++ b/src/chttpd/test/chttpd_welcome_test.erl @@ -60,6 +60,8 @@ should_have_version(Url) -> Version = couch_util:get_value(<<"version">>, Json, undefined), CouchDB = couch_util:get_value(<<"couchdb">>, Json, undefined), Features = couch_util:get_value(<<"features">>, Json, undefined), + Sha = couch_util:get_value(<<"git_sha">>, Json, undefined), + ?assertNotEqual(Sha, undefined), ?assertEqual(<<"Welcome">>, CouchDB), RealVersion = list_to_binary(couch_server:get_version()), ?assertEqual(RealVersion, Version), diff --git a/src/couch/rebar.config.script b/src/couch/rebar.config.script index fe249d0dd..fe7383c18 100644 --- a/src/couch/rebar.config.script +++ b/src/couch/rebar.config.script @@ -39,6 +39,13 @@ Version = case os:getenv("COUCHDB_VERSION") of string:strip(Version0, right) end, +GitSha = case os:getenv("COUCHDB_GIT_SHA") of + false -> + ""; % release builds won’t get a fallback + GitSha0 -> + string:strip(GitSha0, right) +end, + CouchConfig = case filelib:is_file(os:getenv("COUCHDB_CONFIG")) of true -> {ok, Result} = file:consult(os:getenv("COUCHDB_CONFIG")), @@ -149,6 +156,7 @@ AddConfig = [ {port_specs, PortSpecs}, {erl_opts, PlatformDefines ++ [ {d, 'COUCHDB_VERSION', Version}, + {d, 'COUCHDB_GIT_SHA', GitSha}, {i, "../"} ] ++ MD5Config}, {eunit_compile_opts, PlatformDefines} diff --git a/src/couch/src/couch_server.erl b/src/couch/src/couch_server.erl index 002f08ebb..ede8227c8 100644 --- a/src/couch/src/couch_server.erl +++ b/src/couch/src/couch_server.erl @@ -15,7 +15,7 @@ -behaviour(config_listener). -vsn(3). --export([open/2,create/2,delete/2,get_version/0,get_version/1,get_uuid/0]). +-export([open/2,create/2,delete/2,get_version/0,get_version/1,get_git_sha/0,get_uuid/0]). -export([all_databases/0, all_databases/2]). -export([init/1, handle_call/3,sup_start_link/0]). -export([handle_cast/2,code_change/3,handle_info/2,terminate/2]). @@ -57,6 +57,7 @@ get_version(short) -> [Version|_Rest] = string:tokens(get_version(), "+"), Version. +get_git_sha() -> ?COUCHDB_GIT_SHA. get_uuid() -> case config:get("couchdb", "uuid", undefined) of |