#!/bin/bash
# Note: you need python-setuptools and subversion installed to be able to use this script
# Source for trac-accountmanager-plugin comes from SVN repository at trac-hacks.org
site=https://trac-hacks.org/
repo=svn/accountmanagerplugin
tarname=TracAccountManager
# Specify the branch and revision we're after, plus the version upstream calls itself
branch=trunk
svnrel=16056
version=0.5
# Pull the desired version from svn
svn checkout -r ${svnrel} ${site}${repo}/${branch} ${tarname}-${version}
# Avoid exclusion of tests
cd ${tarname}-${version}
patch -p0 < TracAccountManager-0.5dev-r16056-tests.patch
cd -
# Make timestamps be that of last upstream change
find ${tarname}-${version} -name .svn -prune -o -print |
while read pathname
do
timestamp=$(svn info ${pathname} | awk '/^Last Changed Date:/ { print $4 " " $5 " " $6 }')
touch --date="${timestamp}" ${pathname}
done
# Make a tarball
cd ${tarname}-${version}
python setup.py sdist --formats bztar
# Work around svn tagging issues (http://trac.edgewall.org/ticket/10658)
if [ ! -f dist/${tarname}-${version}dev-r${svnrel}.tar.bz2 -a -f dist/${tarname}-${version}.dev0.tar.bz2 ]; then
tar xfj dist/${tarname}-${version}.dev0.tar.bz2
rm dist/${tarname}-${version}.dev0.tar.bz2
grep -rl '[.]dev0' ${tarname}-${version}.dev0 | xargs sed -i -e "s/[.]dev0/dev-r${svnrel}/"
mv ${tarname}-${version}.dev0 ${tarname}-${version}dev-r${svnrel}
tar cfj dist/${tarname}-${version}dev-r${svnrel}.tar.bz2 ${tarname}-${version}dev-r${svnrel}
fi
cd -
if [ "${branch}" = "trunk" ]; then
# dev snapshot
tarball=${tarname}-${version}dev-r${svnrel}.tar.bz2
else
# release
tarball=${tarname}-${version}.tar.bz2
fi
mv ${tarname}-${version}/dist/${tarball} .
# Fix the timestamp of the tarball
timestamp=$(svn info ${tarname}-${version} | awk '/^Last Changed Date:/ { print $4 " " $5 " " $6 }')
touch --date="${timestamp}" ${tarball}
# Display checkout status
svn info ${tarname}-${version} | grep "Last Changed"
# Remove the svn checkout
rm -rf ${tarname}-${version}