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),