From b02fb8fbd15eb68a6b7cd7e4a9f116902e7dabb2 Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Wed, 15 Sep 2010 14:34:49 +0000 Subject: [PATCH] HHH-5524 - tagRelease.sh git-svn-id: https://svn.jboss.org/repos/hibernate/core/branches/Branch_3_5@20638 1b8cb986-b30d-0410-93ca-fae66ebed9b2 --- tagRelease.sh | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 tagRelease.sh diff --git a/tagRelease.sh b/tagRelease.sh new file mode 100755 index 00000000000..afb762da084 --- /dev/null +++ b/tagRelease.sh @@ -0,0 +1,107 @@ +#! /bin/sh + +usage="Usage: tagRelease [-u] [-e exportDirectory] [-r releaseVersion] [-d devVersion]" +projectDir=`pwd` + +releaseVersion= +devVersion= + +performUpdate='' +exportDirectory='' + +################################################################################ +# Update all project poms and commit the changes. +# +# $1: project directory (base directory of recursve find) +# $2: new value for the pom version +# $3: new scm url +updatePomVersionsAndCommit() { + for i in `find $1 -name "pom.xml"`; do + xmlstarlet ed -P -N x="http://maven.apache.org/POM/4.0.0" \ + -u "/x:project/x:parent/x:version" -v $2 \ + -u "/x:project/x:version" -v $2 \ + -u "/x:project/x:scm/x:connection" -v scm:svn:$3 \ + -u "/x:project/x:scm/x:developerConnection" -v scm:svn:$3 \ + -u "/x:project/x:scm/x:url" -v $3 \ + $i > tmp + mv tmp $i + done + + svn commit $projectDirectory -m "Updating pom versions to $1 for release tagging" +} + +################################################################################ +# Start script processing +################################################################################ + +while getopts ":e:r:d:u" opt; do + case $opt in + r) + releaseVersion=$OPTARG;; + d) + devVersion=$OPTARG;; + u) + performUpdate="true";; + e) + exportDirectory=$OPTARG;; + h) + echo $usage;; + \?) + echo $usage + exit 1;; + *) + echo $usage + exit 1;; + esac +done + +if [ -z $releaseVersion ]; then + read -p "Enter the release version: " releaseVersion +fi +if [ -z $devVersion ]; then + read -p "Enter the development version: " devVersion +fi + +projectName=`xmlstarlet sel -N x=http://maven.apache.org/POM/4.0.0 -t -v "/x:project/x:artifactId" pom.xml` +if [ -Z "$projectName" ]; then + echo "Could not determine propject name (misasing/incomplete pom?)." + exit; +fi +projectUrl=`svn info $projectDir | grep URL | awk '{print $2}'` +tagUrl=`echo $projectUrl | sed 's|\(.*\)/.*$|\1/tags/|'`$projectName-$releaseVersion + + +################################################################################ +# Confirm data + +echo "About to tag release with following information:" +echo " tag version : $releaseVersion" +echo " dev version : $devVersion" +echo " dev url : $projectUrl" +echo " tag url : $tagUrl" +while true; do + read -p "Continue? " yn + case $yn in + [Yy]* ) break;; + [Nn]* ) exit;; + * ) echo "Please answer yes or no.";; + esac +done + +################################################################################ +# Go, go , go + +if [ -n "$performUpdate" ]; then + echo "Performing requested svn update..." + svn update $projectDir +fi + +updatePomVersionsAndCommit $projectDir $releaseVersion $tagUrl + +svn copy $projectUrl/ $tagUrl -m "Tagging $releaseVersion release" + +updatePomVersionsAndCommit $projectDir $devVersion $projectUrl + +if [ $exportDirectory ]; then + svn export $tagUrl $exportDirectory +fi