#!/bin/sh DEF_VER=v2.48.1 LF=' ' if test "$#" -ne 3 then echo >&2 "USAGE: $0 " exit 1 fi SOURCE_DIR="$1" INPUT="$2" OUTPUT="$3" if ! test -f "$INPUT" then echo >&2 "Input is not a file: $INPUT" exit 1 fi # Protect us from reading Git version information outside of the Git directory # in case it is not a repository itself, but embedded in an unrelated # repository. GIT_CEILING_DIRECTORIES="$SOURCE_DIR/.." export GIT_CEILING_DIRECTORIES if test -z "$GIT_VERSION" then # First see if there is a version file (included in release tarballs), # then try git-describe, then default. if test -f "$SOURCE_DIR"/version then VN=$(cat "$SOURCE_DIR"/version) || VN="$DEF_VER" elif { test -d "$SOURCE_DIR/.git" || test -d "${GIT_DIR:-.git}" || test -f "$SOURCE_DIR"/.git; } && VN=$(git -C "$SOURCE_DIR" describe --match "v[0-9]*" HEAD 2>/dev/null) && case "$VN" in *$LF*) (exit 1) ;; v[0-9]*) git -C "$SOURCE_DIR" update-index -q --refresh test -z "$(git -C "$SOURCE_DIR" diff-index --name-only HEAD --)" || VN="$VN-dirty" ;; esac then VN=$(echo "$VN" | sed -e 's/-/./g'); else VN="$DEF_VER" fi GIT_VERSION=$(expr "$VN" : v*'\(.*\)') fi if test -z "$GIT_BUILT_FROM_COMMIT" then GIT_BUILT_FROM_COMMIT=$(git -C "$SOURCE_DIR" rev-parse -q --verify HEAD 2>/dev/null) fi if test -z "$GIT_DATE" then GIT_DATE=$(git -C "$SOURCE_DIR" show --quiet --format='%as' 2>/dev/null) fi if test -z "$GIT_USER_AGENT" then GIT_USER_AGENT="git/$GIT_VERSION" fi # While released Git versions only have three numbers, development builds also # have a fourth number that corresponds to the number of patches since the last # release. read GIT_MAJOR_VERSION GIT_MINOR_VERSION GIT_MICRO_VERSION GIT_PATCH_LEVEL trailing <"$OUTPUT".$$+ if ! test -f "$OUTPUT" || ! cmp "$OUTPUT".$$+ "$OUTPUT" >/dev/null then mv "$OUTPUT".$$+ "$OUTPUT" else rm "$OUTPUT".$$+ fi