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 <[email protected]> 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),
