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/13 13:27:54 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 f292602c302775c66895ca9a637c9f3c1317fd8b
Author: Jan Lehnardt <ja...@apache.org>
AuthorDate: Fri Jul 13 14:26:43 2018 +0200
report git sha on welcome request
Closes #1309
---
src/chttpd/src/chttpd_misc.erl | 12 ++++++++++++
src/chttpd/test/chttpd_welcome_test.erl | 2 ++
2 files changed, 14 insertions(+)
diff --git a/src/chttpd/src/chttpd_misc.erl b/src/chttpd/src/chttpd_misc.erl
index 253da23..de05603 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, get_git_sha()},
{features, config:features()}
] ++ case config:get("vendor") of
[] ->
@@ -477,3 +478,14 @@ message_queues(Registered) ->
{Type, Length} = process_info(whereis(Name), Type),
{Name, Length}
end, Registered).
+
+get_git_sha() ->
+ {ok, Version} = application:get_key(couch, vsn),
+ % the format is "2.1.0-409-g3cc99325d" or "2.2.0-db04142"
+ % the difference is (probably) different versions of git
+ case string:split(Version, "-") of
+ [_, Sha] -> Sha;
+ [_, _, GSha] ->
+ [_, Sha] = string:split(GSha, "-g"),
+ Sha
+ end.
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),