]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Rewrote the release tagging script so as to work usefully with git.
authorTravis Cross <tc@traviscross.com>
Tue, 30 Mar 2010 18:00:04 +0000 (18:00 +0000)
committerTravis Cross <tc@traviscross.com>
Tue, 30 Mar 2010 18:41:16 +0000 (18:41 +0000)
scripts/tagscript.sh

index 075f2afa4496e517b801d2f017c7332350fa1b02..7a55a0244520297c8df4e3811ffcbb6f129a4910 100755 (executable)
@@ -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
+