From deef6b1fb7f03d4f59aa5c3f96b9aa4c45c21435 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Tue, 11 Aug 2026 13:01:09 -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') 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 2.12.1