| #!/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/rt-tests |
| 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 |
| if [ ! -e $tar ]; |
| then |
| echo "Generating tarfile $tar" |
| make release |
| else |
| echo "Using existing tarfile $tar" |
| fi |
| |
| if ssh $accnt ls $destpath/$tar >/dev/null 2>&1 |
| then |
| echo "Tarfile $tar already on kernel.org" |
| else |
| echo "Copying tarball $tar to kernel.org" |
| if [ $testing -eq 0 ]; then |
| scp $tar $accnt:$destpath |
| else |
| echo "testing: copy tarball" |
| fi |
| fi |
| |
| [ $testing -eq 1 ] && dryrun=--dry-run |
| echo "Pushing master and tags to kernel.org" |
| git push $dryrun --tags origin master |
| |
| |