116 lines
2.4 KiB
Bash
Executable File
116 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# script to automate pushing rt-tests tarball and git branch to
|
|
# kernel.org.
|
|
#
|
|
# This won't work if you aren't me :)
|
|
#
|
|
# Copyright 2009 Clark Williams <williams@redhat.com>
|
|
#
|
|
|
|
testing=0
|
|
TEMP=$(getopt -o t -l test -n do-git-push -- "$@")
|
|
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
|
|
eval set -- "$TEMP"
|
|
while true; do
|
|
case "$1" in
|
|
-t|--test) testing=1 ; shift ;;
|
|
--) shift ; break ;;
|
|
*) echo "Internal Error!"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
if [ $# -lt 1 ]
|
|
then
|
|
echo "usage: do-git-push <version>"
|
|
exit -1
|
|
fi
|
|
|
|
version=$1
|
|
accnt=clrkwllms@master.kernel.org
|
|
destpath=/pub/linux/kernel/people/clrkwllms/
|
|
branch=$(git symbolic-ref -q HEAD)
|
|
|
|
if [ $testing -eq 1 ]; then
|
|
echo "version: $version"
|
|
echo "accnt: $accnt"
|
|
echo "destpath: $destpath"
|
|
echo "branch: $branch"
|
|
fi
|
|
|
|
# sanity check
|
|
if [ ! -d .git ]
|
|
then
|
|
echo "No .git directory found!"
|
|
echo "cwd: $(pwd)"
|
|
exit -1
|
|
fi
|
|
|
|
# make sure we're on the master branch
|
|
if [ $branch != 'refs/heads/master' ]; then
|
|
echo "must be on master branch to push!"
|
|
echo "(currently on branch: $branch)"
|
|
exit -1
|
|
fi
|
|
|
|
# double sanity check
|
|
mkver=$(awk '$1 == "VERSION_STRING" {print $3; exit 0}' Makefile)
|
|
if [ $version != $mkver ]
|
|
then
|
|
echo "parameter mismatch with Makefile!"
|
|
echo "input parameter: $version"
|
|
echo "Makefile version: $mkver"
|
|
exit -1
|
|
fi
|
|
|
|
# check the git tag
|
|
tag="v$version"
|
|
if rev=$(git rev-parse --verify -q "$tag")
|
|
then
|
|
if [ "tag" = "$(git cat-file -t $rev)" ]; then
|
|
echo "using existing tag $tag"
|
|
else
|
|
echo "$tag is not a tag"
|
|
exit -1
|
|
fi
|
|
else
|
|
echo "Generating annotated tag $tag"
|
|
if [ $testing -eq 0 ]; then
|
|
git tag -a $tag
|
|
if [ $? != 0 ]; then
|
|
echo "No tag message; aborting!"
|
|
exit -1
|
|
fi
|
|
else
|
|
echo "testing: Generate Tag"
|
|
fi
|
|
fi
|
|
|
|
# copy the tarball if it isn't already there
|
|
tar=rt-tests-$version.tar.gz
|
|
asc=rt-tests-$version.tar.asc
|
|
|
|
if [ ! -e $tar ];
|
|
then
|
|
echo "Generating tarfile $tar"
|
|
make release
|
|
else
|
|
echo "Using existing tarfile $tar"
|
|
fi
|
|
|
|
if kup ls $destpath | grep $tar > /dev/null 2>&1
|
|
then
|
|
echo "Tarfile $tar is already on kernel.org"
|
|
else
|
|
echo "Copying tarfile $tar to kernel.org"
|
|
if [ $testing -eq 0 ]; then
|
|
kup put $tar $asc $destpath/$tar
|
|
else
|
|
echo "testing: copy tarfile"
|
|
fi
|
|
fi
|
|
|
|
[ $testing -eq 1 ] && dryrun=--dry-run
|
|
echo "Pushing master and tags to kernel.org"
|
|
git push $dryrun --tags origin master
|