#!/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 # 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 " 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 == "#define" && $2 == "PACKAGE_VERSION" {print $3; exit 0}' config.h) 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 dist 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