Complete revision to how RawTherapee's version is handled in CMake and in other files, #3628
This commit is contained in:
@@ -1,12 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
gitBranch="`git symbolic-ref --short -q HEAD`"
|
||||
gitVersion="`git describe --tags --always`"
|
||||
gitLatesttag="`echo $gitVersion | sed 's/-.*//'`"
|
||||
gitLatesttagdistance="`echo $gitVersion | sed 's/.*-\(.*\)-g.*/\1/'`"
|
||||
gitChangeset="`git rev-parse --verify HEAD`"
|
||||
# This script is called from tools/generateSourceTarball
|
||||
# It is used to generate a ReleaseInfo.cmake file with commit information which
|
||||
# enables compilation without needing to have git installed.
|
||||
|
||||
echo "set(GIT_BRANCH $gitBranch)
|
||||
set(GIT_VERSION $gitLatesttag.$gitLatesttagdistance)
|
||||
set(GIT_CHANGESET $gitChangeset)
|
||||
set(GIT_TAGDISTANCE $gitLatesttagdistance)" > ReleaseInfo.cmake
|
||||
rm -f ReleaseInfo.cmake
|
||||
|
||||
# Get version description.
|
||||
# Depending on whether you checked out a branch (dev) or a tag (release),
|
||||
# "git describe" will return "5.0-gtk2-2-g12345678" or "5.0-gtk2", respectively.
|
||||
gitDescribe="$(git describe --tags --always)"
|
||||
|
||||
# Get branch name.
|
||||
# Will return empty if you checked out a commit or tag. Empty string handled later.
|
||||
gitBranch="$(git symbolic-ref --short -q HEAD)"
|
||||
|
||||
# Get commit hash.
|
||||
gitCommit="$(git rev-parse --short --verify HEAD)"
|
||||
|
||||
# Get commit date, YYYY-MM-DD.
|
||||
gitCommitDate="$(git show -s --format=%cd --date=format:%Y-%m-%d)"
|
||||
|
||||
# Get number of commits since tagging. This is what gitDescribe uses.
|
||||
# Works when checking out branch, tag or commit.
|
||||
gitCommitsSinceTag="$(git rev-list --count HEAD --not $(git tag --merged HEAD))"
|
||||
|
||||
# Get number of commits since branching.
|
||||
# Works when checking out branch, tag or commit.
|
||||
gitCommitsSinceBranch="$(git rev-list --count HEAD --not --tags)"
|
||||
|
||||
if [[ -z $gitDescribe ]]; then
|
||||
printf '%s\n' "Failed finding commit description, aborting."
|
||||
exit 1
|
||||
fi
|
||||
if [[ -z $gitBranch ]]; then
|
||||
printf '%s\n' "No branch found. Using commit description as branch name."
|
||||
gitBranch="$gitDescribe"
|
||||
fi
|
||||
if [[ -z $gitCommit ]]; then
|
||||
printf '%s\n' "Failed finding commit hash, aborting."
|
||||
exit 1
|
||||
fi
|
||||
if [[ -z $gitCommitDate ]]; then
|
||||
printf '%s\n' "Failed finding commit date, aborting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create numeric version.
|
||||
# This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion.
|
||||
# Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS).
|
||||
if [[ -z $gitCommitsSinceTag ]]; then
|
||||
gitVersionNumericBS="0.0.0"
|
||||
else
|
||||
gitVersionNumericBS="${gitDescribe%%-*}" # Remove everything after first hyphen.
|
||||
gitVersionNumericBS="${gitVersionNumericBS}.${gitCommitsSinceTag}" # Remove everything until after first hyphen: 5.0
|
||||
fi
|
||||
|
||||
cat <<EOF > ReleaseInfo.cmake
|
||||
set(GIT_DESCRIBE $gitDescribe)
|
||||
set(GIT_BRANCH $gitBranch)
|
||||
set(GIT_COMMIT $gitCommit)
|
||||
set(GIT_COMMIT_DATE $gitCommitDate)
|
||||
set(GIT_COMMITS_SINCE_TAG $gitCommitsSinceTag)
|
||||
set(GIT_COMMITS_SINCE_BRANCH $gitCommitsSinceBranch)
|
||||
set(GIT_VERSION_NUMERIC_BS $gitVersionNumericBS)
|
||||
EOF
|
||||
|
||||
printf '%s\n' "Git information extracted:" \
|
||||
" Description: ${gitDescribe}" \
|
||||
" Branch: ${gitBranch}" \
|
||||
" Commit: ${gitCommit}" \
|
||||
" Commit date: ${gitCommitDate}" \
|
||||
" Commits since tag: ${gitCommitsSinceTag}" \
|
||||
" Commits since branch: ${gitCommitsSinceBranch}" \
|
||||
" Unreliable verison: ${gitVersionNumericBS}" \
|
||||
""
|
||||
|
Reference in New Issue
Block a user