You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2018/07/15 17:54:40 UTC
[couchdb] 01/01: Report git sha on welcome request
This is an automated email from the ASF dual-hosted git repository.
jan pushed a commit to branch feat/show-git-hash-in-info
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 91fad8317740eee4208d39b786adea4f9f99a5ee
Author: Jan Lehnardt <ja...@apache.org>
AuthorDate: Fri Jul 13 14:26:43 2018 +0200
Report git sha on welcome request
Closes #1309
---
Makefile | 3 ++-
Makefile.win | 6 +++---
build-aux/couchdb-build-release.sh | 6 +++++-
src/chttpd/src/chttpd_misc.erl | 1 +
src/chttpd/test/chttpd_welcome_test.erl | 2 ++
src/couch/rebar.config.script | 8 ++++++++
src/couch/src/couch_server.erl | 3 ++-
7 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index 27d9531..fa8f6f2 100644
--- a/Makefile
+++ b/Makefile
@@ -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)
@@ -82,7 +83,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 5a2a73a..7acb835 100644
--- a/Makefile.win
+++ b/Makefile.win
@@ -14,6 +14,7 @@ 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=
@@ -26,8 +27,7 @@ endif
DESTDIR=
# Rebar options
-apps=
-skip_deps=folsom,meck,mochiweb,triq,snappy
+apps=skip_deps=folsom,meck,mochiweb,triq,snappy
suites=
tests=
@@ -53,7 +53,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 4482b71..2d219e5 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 95345d4..f4467b6 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_version_suffix())},
{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 af9732f..b737abd 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 498ce3a..44e1c07 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,
+VersionSuffix = case os:getenv("COUCHDB_GIT_SHA") of
+ false ->
+ ""; % release builds won’t get a fallback
+ VersionSuffix0 ->
+ string:strip(VersionSuffix0, right)
+end,
+
CouchConfig = case filelib:is_file(os:getenv("COUCHDB_CONFIG")) of
true ->
{ok, Result} = file:consult(os:getenv("COUCHDB_CONFIG")),
@@ -142,6 +149,7 @@ AddConfig = [
{port_specs, PortSpecs},
{erl_opts, PlatformDefines ++ [
{d, 'COUCHDB_VERSION', Version},
+ {d, 'COUCHDB_VERSION_SUFFIX', VersionSuffix},
{i, "../"}
]},
{eunit_compile_opts, PlatformDefines}
diff --git a/src/couch/src/couch_server.erl b/src/couch/src/couch_server.erl
index 002f08e..ea42b4c 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_version_suffix/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_version_suffix() -> ?COUCHDB_VERSION_SUFFIX.
get_uuid() ->
case config:get("couchdb", "uuid", undefined) of