#!/bin/sh
srcdir=`dirname $0`
-gitver=`git describe --abbrev=8 2>/dev/null`
-case "$gitver" in
- *.*)
- echo "#define RSYNC_GITVER \"$gitver\"" >git-version.h
- ;;
- *)
- # We either create an empty file or update the time on what the user gave us.
- touch git-version.h
- ;;
-esac
+if [ ! -f git-version.h ]; then
+ touch git-version.h
+fi
+
+if test -d "$srcdir/.git" || test -f "$srcdir/.git"; then
+ gitver=`git describe --abbrev=8 2>/dev/null`
+ # NOTE: I'm avoiding "|" in sed since I'm not sure if sed -r is portable and "\|" fails on some OSes.
+ verchk=`echo "$gitver-" | sed -n '/^v3\.[0-9][0-9]*\.[0-9][0-9]*\(pre[0-9]*\)*-/p'`
+ if [ -n "$verchk" ]; then
+ echo "#define RSYNC_GITVER \"$gitver\"" >git-version.h.new
+ if ! diff git-version.h.new git-version.h >/dev/null; then
+ echo "Updating git-version.h"
+ mv git-version.h.new git-version.h
+ else
+ rm git-version.h.new
+ fi
+ fi
+fi