Put git version in a file for between-release versioning.
authorWayne Davison <wayne@opencoder.net>
Sat, 1 Aug 2020 07:15:06 +0000 (00:15 -0700)
committerWayne Davison <wayne@opencoder.net>
Sat, 1 Aug 2020 07:15:06 +0000 (00:15 -0700)
.gitignore
Makefile.in
mkgitver [new file with mode: 0755]
options.c

index 6fb512ee2e40501798c9c5ff423a693b86c6ae30..47d75e914c2999f575f8aa74981d995c02a04769 100644 (file)
@@ -32,6 +32,7 @@ aclocal.m4
 /rsync
 /stunnel-rsyncd.conf
 /shconfig
+/git-version.h
 /testdir
 /tests-dont-exist
 /testtmp
index e1060b7715b6050bea77b6b3921148f0099250ff..2c30ee5d982456bfe4734c8a3022c3ba9ed69cbc 100644 (file)
@@ -99,7 +99,7 @@ rsync$(EXEEXT): $(OBJS)
 $(OBJS): $(HEADERS)
 $(CHECK_OBJS): $(HEADERS)
 tls.o xattrs.o: lib/sysxattrs.h
-options.o: latest-year.h help-rsync.h help-rsyncd.h
+options.o: latest-year.h help-rsync.h help-rsyncd.h git-version.h
 exclude.o: default-cvsignore.h
 loadparm.o: default-dont-compress.h daemon-parm.h
 
@@ -132,6 +132,12 @@ rounding.h: rounding.c rsync.h proto.h
        fi
        @rm -f rounding.out
 
+# While $(wildcard ...) is a GNU make idiom, at least other makes should just turn it into an
+# empty string (we need something that will vanish if we're not building a git checkout).
+# If you want an updated git version w/o GNU make, remove git-version.h after a pull.
+git-version.h: mkgitver $(wildcard $(srcdir)/.git/logs/HEAD)
+       $(srcdir)/mkgitver
+
 simd-checksum-x86_64.o: simd-checksum-x86_64.cpp
        @$(srcdir)/cmdormsg disable-simd $(CXX) -I. $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $(srcdir)/simd-checksum-x86_64.cpp
 
diff --git a/mkgitver b/mkgitver
new file mode 100755 (executable)
index 0000000..e8461da
--- /dev/null
+++ b/mkgitver
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+srcdir=`dirname $0`
+
+if test -d "$srcdir/.git"; then
+    gitver=\"`git describe --tags`\" || exit 1
+else
+    gitver=RSYNC_VERSION
+fi
+echo "#define RSYNC_GITVER $gitver" >git-version.h
index 36e88621e0580bea4d7a6571b765596d086130c0..0e9f3db60eb074b17452999eb69e7bdb4da0a797 100644 (file)
--- a/options.c
+++ b/options.c
@@ -23,6 +23,7 @@
 #include "itypes.h"
 #include "ifuncs.h"
 #include "latest-year.h"
+#include "git-version.h"
 #include <popt.h>
 
 extern int module_id;
@@ -727,7 +728,7 @@ static void print_rsync_version(enum logcode f)
        subprotocol = istring(".PR%d", SUBPROTOCOL_VERSION);
 #endif
        rprintf(f, "%s  version %s  protocol version %d%s\n",
-               RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
+               RSYNC_NAME, RSYNC_GITVER, PROTOCOL_VERSION, subprotocol);
 
        rprintf(f, "Copyright (C) 1996-" LATEST_YEAR " by Andrew Tridgell, Wayne Davison, and others.\n");
        rprintf(f, "Web site: https://rsync.samba.org/\n");