Permalink
Fetching contributors…
Cannot retrieve contributors at this time
executable file 76 lines (67 sloc) 2.37 KB
#!/bin/sh
#
# Copyright (C) 2008-2012 Nicolai Langfeldt <janl@redpill-linpro.com> - All rights reserved.
# Copyright (C) 2009 Kjell-Magne Øierud <kjellm@redpill-linpro.com> - All rights reserved.
# Copyright (C) 2011-2013 Steve Schnepp <steve.schnepp@pwkf.org> - All rights reserved.
# Copyright (C) 2012 Stig Sandbeck Mathisen <ssm@debian.org> - All rights reserved.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions
# of the GNU General Public License v.2 or v.3.
#
# Generate a version string for use when building.
#
# * If RELEASE exists, and is non-empty, use the contents of that file.
# This is in case we're building from a tarball.
#
# * If we're inside a git tree:
# - For the "master" branch, use "git describe".
# - For "detached" branches (mostly for tag checkouts), also use "git describe".
# - For other branches, use a "$VERSION-$NBCOMMITS-$BRANCH-$DATE-g$COMMIT"
# sortof version.
#
# * Try to make it up from the directory name (munin-2.0.1 -> 2.0.1)
#
# * If we're still looking for a version, just fallback to "unknown".
current_git_branch() {
# Handle this too:
# git checkout 2.0.9
# git branch
# * (no branch)
# devel
GB="$(git branch | awk '$1 == "*" {print $2}')"
case $GB in
"(no" | "(detached" ) echo;;
* ) echo $GB;;
esac
}
generate_version_string() {
branch="$(current_git_branch)"
case "${branch}" in
""|master|stable-*)
git describe
;;
*)
# "foo | read VAR" does *not* work
# workaround stolen from http://www.etalabs.net/sh_tricks.html
read VERSION COMMITS HASH <<EOF
$(git describe --long | perl -lne 'print "$1 $2 $3" if m/(.*)-(\d+)-g(\w+)/')
EOF
# As git describe, we also use the "-g" magic string to denote a git hash
git log -n 1 --pretty="${VERSION}-${branch}-%ad-c${COMMITS}-g%h" --date=short
;;
esac
}
generate_version_string_from_dir() {
# munin-c- is "9" chars, not 7 as munin- is.
basename $(pwd) | grep -e '^munin-c' | cut -c9-
}
if [ -s "RELEASE" ]; then
cat RELEASE
elif [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ]; then
generate_version_string
elif [ ! -z "$(generate_version_string_from_dir)" ]; then
generate_version_string_from_dir
else
echo "unknown"
fi