On Tue, Jul 27, 2010 at 4:57 PM, Peter Hutterer
<[email protected]> wrote:
> This is a modified copy of the release.sh script from X.Org's util/modular
> repository.
>
> http://cgit.freedesktop.org/xorg/util/modular/tree/release.sh
>
> Signed-off-by: Peter Hutterer <[email protected]>

Acked-by: Ping Cheng <[email protected]>

Ping

> ---
> I got sick of having to release the tarballs manually...
>
>  release.sh |  213 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 213 insertions(+), 0 deletions(-)
>  create mode 100755 release.sh
>
> diff --git a/release.sh b/release.sh
> new file mode 100755
> index 0000000..393857a
> --- /dev/null
> +++ b/release.sh
> @@ -0,0 +1,213 @@
> +#!/bin/sh
> +# Release script for xf86-input-wacom.
> +# This is essentially a copy of the X.Org util/modular/release.sh script
> +# with a few modified parameters.
> +
> +set -e
> +
> +announce_list="[email protected]"
> +module=xf86-input-wacom
> +user=
> +host=shell.sourceforge.net
> +srv_path=/home/frs/project/l/li/linuxwacom/$module
> +webpath=sourceforge.net/projects/linuxwacom/files/$module
> +remote=origin
> +
> +usage()
> +{
> +    cat <<HELP
> +Usage: `basename $0` [options] <tag_previous> <tag_current>
> +
> +Options:
> +  --force       force overwritting an existing release
> +  --user <name> username on $host
> +  --help        this help message
> +  --ignore-local-changes        don't abort on uncommitted local changes
> +  --remote      git remote where the change should be pushed (default 
> "origin")
> +HELP
> +}
> +
> +abort_for_changes()
> +{
> +    cat <<ERR
> +Uncommitted changes found. Did you forget to commit? Aborting.
> +Use --ignore-local-changes to skip this check.
> +ERR
> +    exit 1
> +}
> +
> +gen_announce_mail()
> +{
> +case "$tag_previous" in
> +initial)
> +       range="$tag_current"
> +       ;;
> +*)
> +       range="$tag_previous".."$tag_current"
> +       ;;
> +esac
> +
> +MD5SUM=`which md5sum || which gmd5sum`
> +SHA1SUM=`which sha1sum || which gsha1sum`
> +
> +    cat <<RELEASE
> +Subject: [ANNOUNCE] $module $version
> +To: $announce_list
> +
> +`git log --no-merges "$range" | git shortlog`
> +
> +git tag: $tag_current
> +
> +http://$webpath/$tarbz2/download
> +MD5:  `cd $tarball_dir && $MD5SUM $tarbz2`
> +SHA1: `cd $tarball_dir && $SHA1SUM $tarbz2`
> +
> +http://$webpath/$targz/download
> +MD5:  `cd $tarball_dir && $MD5SUM $targz`
> +SHA1: `cd $tarball_dir && $SHA1SUM $targz`
> +
> +RELEASE
> +}
> +
> +export LC_ALL=C
> +
> +while [ $# != 0 ]; do
> +    case "$1" in
> +    --force)
> +        force="yes"
> +        shift
> +        ;;
> +    --help)
> +        usage
> +        exit 0
> +        ;;
> +    --user)
> +       shift
> +       user=$1@
> +       shift
> +       ;;
> +    --ignore-local-changes)
> +        ignorechanges=1
> +        shift
> +        ;;
> +    --remote)
> +        shift
> +        remote=$1
> +        shift
> +        ;;
> +    --*)
> +        echo "error: unknown option"
> +        usage
> +        exit 1
> +        ;;
> +    *)
> +        tag_previous="$1"
> +        tag_current="$2"
> +        shift 2
> +        if [ $# != 0 ]; then
> +            echo "error: unknown parameter"
> +            usage
> +            exit 1
> +        fi
> +        ;;
> +    esac
> +done
> +
> +# Check for uncommitted/queued changes.
> +if [ "x$ignorechanges" != "x1" ]; then
> +    set +e
> +    git diff --exit-code > /dev/null 2>&1
> +    if [ $? -ne 0 ]; then
> +        abort_for_changes
> +    fi
> +    set -e
> +fi
> +
> +# Check if the object has been pushed. Do do so
> +# 1. Check if the current branch has the object. If not, abort.
> +# 2. Check if the object is on $remote/branchname. If not, abort.
> +local_sha=`git rev-list -1 $tag_current`
> +current_branch=`git branch | grep "\*" | sed -e "s/\* //"`
> +set +e
> +git rev-list $current_branch | grep $local_sha > /dev/null
> +if [ $? -eq 1 ]; then
> +    echo "Cannot find tag '$tag_current' on current branch. Aborting."
> +    echo "Switch to the correct branch and re-run the script."
> +    exit 1
> +fi
> +
> +revs=`git rev-list $remote/$current_branch..$current_branch | wc -l`
> +if [ $revs -ne 0 ]; then
> +    git rev-list $remote/$current_branch..$current_branch | grep $local_sha 
> > /dev/null
> +
> +    if [ $? -ne 1 ]; then
> +        echo "$remote/$current_branch doesn't have object $local_sha"
> +        echo "for tag '$tag_current'. Did you push branch first? Aborting."
> +        exit 1
> +    fi
> +fi
> +set -e
> +
> +tarball_dir="$(dirname $(find . -name config.status))"
> +module="${tag_current%-*}"
> +if [ "x$module" = "x$tag_current" ]; then
> +    # version-number-only tag.
> +    pwd=`pwd`
> +    module=`basename $pwd`
> +    version="$tag_current"
> +else
> +    # module-and-version style tag
> +    version="${tag_current##*-}"
> +fi
> +
> +detected_module=`grep 'PACKAGE = ' $tarball_dir/Makefile | sed 's|PACKAGE = 
> ||'`
> +if [ -f $detected_module-$version.tar.bz2 ]; then
> +    module=$detected_module
> +fi
> +
> +modulever=$module-$version
> +tarbz2="$modulever.tar.bz2"
> +targz="$modulever.tar.gz"
> +announce="$tarball_dir/$modulever.announce"
> +
> +echo "checking parameters"
> +if ! [ -f "$tarball_dir/$tarbz2" ] ||
> +   ! [ -f "$tarball_dir/$targz" ] ||
> +     [ -z "$tag_previous" ]; then
> +    echo "error: incorrect parameters!"
> +    usage
> +    exit 1
> +fi
> +
> +echo "checking for proper current dir"
> +if ! [ -d .git ]; then
> +    echo "error: do this from your git dir, weenie"
> +    exit 1
> +fi
> +
> +echo "checking for an existing tag"
> +if ! git tag -l $tag_current >/dev/null; then
> +    echo "error: you must tag your release first!"
> +    exit 1
> +fi
> +
> +echo "checking for an existing release"
> +if ssh $user$host ls $srv_path/$module/$targz >/dev/null 2>&1 ||
> +ssh $user$host_people ls $srv_path/$module/$tarbz2 >/dev/null 2>&1; then
> +if [ "x$force" = "xyes" ]; then
> +echo "warning: overriding released file ... here be dragons."
> +else
> +echo "error: file already exists!"
> +exit 1
> +fi
> +fi
> +
> +echo "generating announce mail template, remember to sign it"
> +gen_announce_mail >$announce
> +echo "    at: $announce"
> +
> +echo "installing release into server"
> +scp $tarball_dir/$targz $tarball_dir/$tarbz2 $user$host:$srv_path
> +
> +echo "pushing tag upstream"
> +git push $remote $tag_current
> --
> 1.7.1
>
>
> ------------------------------------------------------------------------------
> The Palm PDK Hot Apps Program offers developers who use the
> Plug-In Development Kit to bring their C/C++ apps to Palm for a share
> of $1 Million in cash or HP Products. Visit us here for more details:
> http://ad.doubleclick.net/clk;226879339;13503038;l?
> http://clk.atdmt.com/CRS/go/247765532/direct/01/
> _______________________________________________
> Linuxwacom-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
>

------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share 
of $1 Million in cash or HP Products. Visit us here for more details:
http://ad.doubleclick.net/clk;226879339;13503038;l?
http://clk.atdmt.com/CRS/go/247765532/direct/01/
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to