aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2017-12-15 00:34:38 +0100
committerJunio C Hamano <gitster@pobox.com>2017-12-14 22:53:04 -0800
commited32b788c06973ef28440ef81fdde9e7e55667f1 (patch)
tree05de500c27782e0134b0f4fb5cf823aa64291e57
parentb22894049ffed57eb150ad156796e3eda86259c9 (diff)
downloadgit-ed32b788c06973ef28440ef81fdde9e7e55667f1.tar.gz
git-ed32b788c06973ef28440ef81fdde9e7e55667f1.tar.xz
version --build-options: report commit, too, if possible
In particular when local tags are used (or tags that are pushed to some fork) to build Git, it is very hard to figure out from which particular revision a particular Git executable was built. It gets worse when those tags are deleted, or even updated. Let's just report an exact, unabbreviated commit name in our build options. We need to be careful, though, to report when the current commit cannot be determined, e.g. when building from a tarball without any associated Git repository. This could be the case also when extracting Git's source code into an unrelated Git worktree. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--Makefile4
-rw-r--r--help.c5
-rw-r--r--version.c1
-rw-r--r--version.h1
4 files changed, 10 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 5587bccc9..2ce70d205 100644
--- a/Makefile
+++ b/Makefile
@@ -1902,7 +1902,9 @@ builtin/help.sp builtin/help.s builtin/help.o: EXTRA_CPPFLAGS = \
version.sp version.s version.o: GIT-VERSION-FILE GIT-USER-AGENT
version.sp version.s version.o: EXTRA_CPPFLAGS = \
'-DGIT_VERSION="$(GIT_VERSION)"' \
- '-DGIT_USER_AGENT=$(GIT_USER_AGENT_CQ_SQ)'
+ '-DGIT_USER_AGENT=$(GIT_USER_AGENT_CQ_SQ)' \
+ '-DGIT_BUILT_FROM_COMMIT="$(shell GIT_CEILING_DIRECTORIES=\"$(CURDIR)/..\" \
+ git rev-parse -q --verify HEAD || :)"'
$(BUILT_INS): git$X
$(QUIET_BUILT_IN)$(RM) $@ && \
diff --git a/help.c b/help.c
index cbcb159f3..60071a9be 100644
--- a/help.c
+++ b/help.c
@@ -413,6 +413,11 @@ int cmd_version(int argc, const char **argv, const char *prefix)
if (build_options) {
printf("cpu: %s\n", GIT_HOST_CPU);
+ if (git_built_from_commit_string[0])
+ printf("built from commit: %s\n",
+ git_built_from_commit_string);
+ else
+ printf("no commit associated with this build\n");
printf("sizeof-long: %d\n", (int)sizeof(long));
/* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */
}
diff --git a/version.c b/version.c
index 6106a8098..41b718c29 100644
--- a/version.c
+++ b/version.c
@@ -3,6 +3,7 @@
#include "strbuf.h"
const char git_version_string[] = GIT_VERSION;
+const char git_built_from_commit_string[] = GIT_BUILT_FROM_COMMIT;
const char *git_user_agent(void)
{
diff --git a/version.h b/version.h
index 6911a4f15..7c62e8057 100644
--- a/version.h
+++ b/version.h
@@ -2,6 +2,7 @@
#define VERSION_H
extern const char git_version_string[];
+extern const char git_built_from_commit_string[];
const char *git_user_agent(void);
const char *git_user_agent_sanitized(void);