From be7aa1bba701f3dce2a475c1fe37f4368e9a2893 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Fri, 14 Aug 2026 09:29:34 -1000 Subject: Move `gen-version.sh` into tools --- tools/gen-version.sh | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 tools/gen-version.sh (limited to 'tools/gen-version.sh') diff --git a/tools/gen-version.sh b/tools/gen-version.sh new file mode 100755 index 0000000..b28e987 --- /dev/null +++ b/tools/gen-version.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# Writes a "CGIT_VERSION = ..." line into the output file, which the build +# then includes. Run it from the project root, as gen-version.sh +# [output], so that git describe reports cgit rather than the bundled git +# submodule. The output file defaults to VERSION. + +version=$1 +output=${2:-VERSION} + +# Prefer what git describe reports, but only at the top of the cgit working +# tree, and keep the fallback when it has nothing to say, as in a shallow or +# tagless clone. +if test "$(git rev-parse --git-dir 2>/dev/null)" = '.git' +then + described=$(git describe --abbrev=4 HEAD 2>/dev/null) + test -n "$described" && version=$described +fi + +new="CGIT_VERSION = $version" +old=$(cat "$output" 2>/dev/null) + +# Leaving the file untouched when nothing changed keeps make from rebuilding +# everything that depends on it. +test "$old" = "$new" && exit 0 + +echo "$new" > "$output" +cat "$output" -- cgit v2.8.0