mirror of
https://github.com/firehol/firehol.git
synced 2024-07-08 11:21:45 +00:00
![Philip Whineray](/assets/img/avatar_default.png)
Use configure.ac to maintain version number Remove redundant NEWS (ChangeLog) and AUTHORS (THANKS) files Move hooks to their own directory Rename README to README.md to format nicely on github Generate README for tar by removing git specifics from README.md Automate tagging when -rc or final version set in configure.ac Improve pre-commit checking
149 lines
3.0 KiB
Bash
Executable File
149 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# update-tags
|
|
#
|
|
scriptname=update-tags
|
|
if ! MYTMP=$(mktemp -d -t $scriptname-XXXXXX)
|
|
then
|
|
echo >&2
|
|
echo >&2
|
|
echo >&2 "Cannot create temporary directory."
|
|
echo >&2
|
|
exit 1
|
|
fi
|
|
|
|
cleanup() {
|
|
status=$?
|
|
if [ $status -ne 0 ]
|
|
then
|
|
echo "FAILED."
|
|
if [ "$TAGVER" ]
|
|
then
|
|
git tag -d "$TAGVER"
|
|
fi
|
|
echo "To re-run manually:"
|
|
echo " git diff HEAD^ | ./packaging/update-tags -"
|
|
echo "To undo commit:"
|
|
echo " git reset HEAD^"
|
|
fi
|
|
rm -rf "${MYTMP}"
|
|
exit $status
|
|
}
|
|
|
|
# clean up if we get stopped by Crtl-C or forced logout or normal exit
|
|
trap cleanup INT
|
|
trap cleanup HUP
|
|
trap cleanup 0
|
|
|
|
set -e
|
|
if [ "$1" = "--debug" ]
|
|
then
|
|
set -x
|
|
shift
|
|
fi
|
|
|
|
if [ $# -lt 1 ]
|
|
then
|
|
echo "Use only from .git/hooks/post-commit"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -x packaging/update-tags ]
|
|
then
|
|
echo "Must be run from base directory"
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$1" = "-" ]
|
|
then
|
|
from_cache=Y
|
|
f=""
|
|
else
|
|
from_cache=
|
|
for f in "$@"
|
|
do
|
|
if [ ! -f "$f" ]
|
|
then
|
|
echo "$f: no such file"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
git status --porcelain "$@" | grep "^?" | cut -c4- > $MYTMP/missing.lst
|
|
|
|
while read missing
|
|
do
|
|
git update-index --add --cacheinfo \
|
|
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 $missing
|
|
done < $MYTMP/missing.lst
|
|
|
|
empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
|
git diff $empty_tree -- "$@" > $MYTMP/diff.full
|
|
f=$MYTMP/diff.full
|
|
|
|
while read missing
|
|
do
|
|
git update-index --force-remove $missing
|
|
done < $MYTMP/missing.lst
|
|
fi
|
|
|
|
> $MYTMP/diff.lst sed -e "/^+++ b/{p;s:^+++ b/::;w $MYTMP/files.lst" -e "d;}" $f
|
|
|
|
#cat $MYTMP/diff.lst
|
|
#cat $MYTMP/files.lst
|
|
|
|
dirname="${0%/*}"
|
|
if [ "$dirname" = "$0" ]; then dirname="."; fi
|
|
source $dirname/packaging.functions
|
|
|
|
status=0
|
|
while read filename
|
|
do
|
|
#echo Checking $filename
|
|
case $filename in
|
|
configure.ac|ChangeLog)
|
|
mkdir -p $MYTMP/files
|
|
git show HEAD:configure.ac > $MYTMP/files/configure.ac
|
|
version=`get_configure_ac_version`
|
|
case "$(match_version $version)" in
|
|
prerelease|candidate|release)
|
|
do_release=Y
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
#echo "No checks found for $filename"
|
|
:
|
|
;;
|
|
esac
|
|
done < $MYTMP/files.lst
|
|
|
|
if [ "$do_release" ]
|
|
then
|
|
echo "Tagging new release with:"
|
|
echo " git tag -s \"v$version\" -m \"Release version $version\""
|
|
git tag -s "v$version" -m "Release version $version"
|
|
TAGVER="v$version"
|
|
|
|
splitver confmaj confmin conffix confsfx "$version"
|
|
if [ ! "$confsfx" ]
|
|
then
|
|
echo "Incrementing version in configure.ac:"
|
|
conffix=`expr $conffix + 1`
|
|
sed -i -e "s/define(\[VERSION_FIX\], \[.*])/define([VERSION_FIX], [$conffix])/" configure.ac
|
|
fi
|
|
|
|
echo "Resetting suffix in configure.ac:"
|
|
sed -i -e 's/define(\[VERSION_SUFFIX\], \[.*])/define([VERSION_SUFFIX], [_master])/' configure.ac
|
|
|
|
echo "Committing new configure.ac:"
|
|
git commit --no-verify -m "Post release $version" -- configure.ac
|
|
echo ""
|
|
echo "Verify, then:"
|
|
echo " git push origin"
|
|
echo " git push origin tag $TAGVER"
|
|
fi
|
|
|
|
exit $status
|