diff --git a/scripts/tagscript.sh b/scripts/tagscript.sh index 075f2afa44..7a55a02445 100755 --- a/scripts/tagscript.sh +++ b/scripts/tagscript.sh @@ -1,34 +1,67 @@ -NEW_MICRO=4 -rm -rf freeswitch.tag.working -svn co http://svn.freeswitch.org/svn/freeswitch/trunk freeswitch.tag.working -cd freeswitch.tag.working -SWITCH_VERSION_MAJOR=`grep SWITCH_VERSION_MAJOR configure.in | sed "s|.*\[||" | sed "s|\].*||"` -SWITCH_VERSION_MINOR=`grep SWITCH_VERSION_MINOR configure.in | sed "s|.*\[||" | sed "s|\].*||"` -SWITCH_VERSION_MICRO=`grep SWITCH_VERSION_MICRO configure.in | sed "s|.*\[||" | sed "s|\].*||"` -FREESWITCH_VERSION=$((`svnversion .` + 1)) -cat configure.in | sed "s|$SWITCH_VERSION_MICRO|$NEW_MICRO|" | sed "s|svn-revision-here|$FREESWITCH_VERSION|" | sed "s|#AC_SUBST(SWITCH_VERSION_REVISION|AC_SUBST(SWITCH_VERSION_REVISION|" > configure.tmp -cp -f configure.tmp configure.in -rm -f configure.tmp -cd libs/openzap/ -OPENZAP_VERSION=$((`svnversion .` + 1)) -svn copy . http://svn.openzap.org:81/svn/openzap/tags/v$OPENZAP_VERSION -m"tag" -cd ../.. -echo 'cat $1 | sed "s|openzap/trunk|openzap/tags/v'$OPENZAP_VERSION'|" > svn-temp-working' > externaleditor.sh -echo 'cp -f svn-temp-working $1' >> externaleditor.sh -echo 'rm -f svn-temp-working' >> externaleditor.sh -chmod a+x externaleditor.sh -svn propedit svn:externals . --editor-cmd=./externaleditor.sh -svn copy . http://svn.freeswitch.org/svn/freeswitch/tags/$SWITCH_VERSION_MAJOR.$SWITCH_VERSION_MINOR.$NEW_MICRO -m"tag" -cd .. -rm -rf freeswitch.tag.working -svn co http://svn.freeswitch.org/svn/freeswitch/tags/$SWITCH_VERSION_MAJOR.$SWITCH_VERSION_MINOR.$NEW_MICRO freeswitch-$SWITCH_VERSION_MAJOR.$SWITCH_VERSION_MINOR.$NEW_MICRO -cd freeswitch-$SWITCH_VERSION_MAJOR.$SWITCH_VERSION_MINOR.$NEW_MICRO +#!/bin/bash + +src_repo="$(pwd)" + +if [ ! -d .git ]; then + echo "error: must be run from within the top level of a FreeSWITCH git tree." 1>&2 + exit 1; +fi + +if [ -z "$1" ]; then + echo "usage: ./scripts/tagscript.sh MAJOR.MINOR.MICRO[.REVISION]" 1>&2 + exit 1; +fi + +ver="$1" +major=$(echo "$ver" | cut -d. -f1) +minor=$(echo "$ver" | cut -d. -f2) +micro=$(echo "$ver" | cut -d. -f3) +rev=$(echo "$ver" | cut -d. -f4) + +dst_name="freeswitch-$major.$minor.$micro" +dst_dir="$src_repo/../$dst_name" + +if [ -d "$dst_dir" ]; then + echo "error: destination directory $dst_dir already exists." 1>&2 + exit 1; +fi + +# save local changes +ret=$(git stash save "Save uncommitted changes before tagging.") +if echo $ret | grep "^Saved"; then + stash_saved=1 +fi + +sed -e "s|\(AC_SUBST(SWITCH_VERSION_MAJOR, \[\).*\(\])\)|\1$major\2|" \ + -e "s|\(AC_SUBST(SWITCH_VERSION_MINOR, \[\).*\(\])\)|\1$minor\2|" \ + -e "s|\(AC_SUBST(SWITCH_VERSION_MICRO, \[\).*\(\])\)|\1$micro\2|" \ + -e "s|\(AC_SUBST(SWITCH_VERSION_REVISION, \[\).*\(\])\)|\1$rev\2|" \ + -i configure.in + +if [ -n "$rev" ]; then + sed -e "s|#\(AC_SUBST(SWITCH_VERSION_REVISION\)|\1|" \ + -i configure.in +fi + +git add configure.in +git commit -m "Release freeswitch-$ver" +git tag -a -m "freeswitch-$ver release" v$ver + +git clone $src_repo $dst_dir +if [ -n "$stash_saved" ]; then + git stash pop +fi + +cd $dst_dir + ./bootstrap.sh -rm -rf `find . -name .svn` mv bootstrap.sh rebootstrap.sh rm -f docs/AUTHORS rm -f docs/COPYING rm -f docs/ChangeLog +rm -rf .git cd .. -tar -czvf freeswitch-$SWITCH_VERSION_MAJOR.$SWITCH_VERSION_MINOR.$NEW_MICRO.tar.gz freeswitch-$SWITCH_VERSION_MAJOR.$SWITCH_VERSION_MINOR.$NEW_MICRO/ -tar -cjvf freeswitch-$SWITCH_VERSION_MAJOR.$SWITCH_VERSION_MINOR.$NEW_MICRO.tar.bz2 freeswitch-$SWITCH_VERSION_MAJOR.$SWITCH_VERSION_MINOR.$NEW_MICRO/ +tar -czvf $dst_name.tar.gz $dst_dir +tar -cjvf $dst_name.tar.bz2 $dst_dir +rm -rf $dst_dir +