#!/bin/sh # # Sebastien Wains # http://www.wains.be # # $Id: create_svntrac_project.sh 5 2007-10-11 07:58:15Z sw $ # # Create the SVN repository and TRAC environment for a project # First, we run the script to create the SVN repository : script.sh project_name 0 # Then we import the project to the repository # Next, we run the script again to create the TRAC env : script.sh project_name 1 # Variables PATH=/usr/bin:/bin:/usr/sbin SCRIPTNAME=`basename $0` SVNDIR="/home/svn" TRACDIR="/home/trac" DEVUSER="sw" APACHEGROUP="www-data" APACHECONFIG=/etc/apache2/sites-available/default # Script will take 2 args if [ -z $2 ] then echo "Usage : " echo " " echo "${SCRIPTNAME} project_name (0|1)" echo "project_name = NO space or special char" echo "0 = SVN repository creation" echo "1 = TRAC environment creation, SVN repository must exist and project must ALREADY BE imported" exit 1 fi # Are you root ? ID=`id | awk -F'=' '{print $2}' | awk -F'(' '{print $1}'` if [ "${ID}" != "0" ] then echo "You need to be ROOT !" exit 1 fi PROJECT=$1 if [ "$2" -eq "0" ] then # Begin part one (SVN creation) # Create SVN project echo "Creating SVN project named ${PROJECT}" svnadmin create ${SVNDIR}/${PROJECT} # Set permissions to the SVN repository (sw:www-data + set-gid) echo "Setting permissions to the SVN repository" chown -R ${DEVUSER}:${APACHEGROUP} ${SVNDIR}/${PROJECT} cd ${SVNDIR}/${PROJECT} find -type d | xargs chmod 2755 find -type f | xargs chmod 644 echo "Before creating the TRAC environment, you must import your project to the SVN repository" echo "svn import /path/to/project file:///${SVNDIR}/${PROJECT} -m 'initial import'" echo " " echo "When done, run \"${SCRIPTNAME} ${PROJECT} 1\"" exit 0 # Part one done fi if [ "$2" -eq "1" ] then # Begin part two # Create the TRAC environment # initenv echo "Creating the TRAC environment for the project" trac-admin ${TRACDIR}/${PROJECT} initenv ${PROJECT} sqlite:db/trac.db svn ${SVNDIR}/${PROJECT} /usr/share/trac/templates # Setting permissions on the TRAC project (sw:www-data + set-gid) echo "Setting permissions to the TRAC files" chown -R ${DEVUSER}:${APACHEGROUP} ${TRACDIR}/${PROJECT} cd ${TRACDIR}/${PROJECT} find -type d | xargs chmod 2775 find -type f | xargs chmod 664 # Create config in Apache2 # Under Debian : /etc/apache2/sites-available/default echo "Adding config to Apache" echo " " >> ${APACHECONFIG} echo "# TRAC : ${PROJECT}" >> ${APACHECONFIG} echo "ScriptAlias /${PROJECT} /usr/share/trac/cgi-bin/trac.cgi" >> ${APACHECONFIG} echo "" >> ${APACHECONFIG} echo " SetEnv TRAC_ENV "${TRACDIR}/${PROJECT}"" >> ${APACHECONFIG} echo "" >> ${APACHECONFIG} echo " " >> ${APACHECONFIG} echo "" >> ${APACHECONFIG} echo " AuthType Basic" >> ${APACHECONFIG} echo " AuthName "${PROJECT}"" >> ${APACHECONFIG} echo " AuthUserFile /etc/apache2/passwd-svn" >> ${APACHECONFIG} echo " Require valid-user" >> ${APACHECONFIG} echo "" >> ${APACHECONFIG} # Restart Apache echo "Restarting Apache" invoke-rc.d apache2 restart # Setting TRAC permissions echo "TRAC : Removing some permissions to anonymous" trac-admin ${TRACDIR}/${PROJECT} permission remove anonymous FILE_VIEW trac-admin ${TRACDIR}/${PROJECT} permission remove anonymous WIKI_CREATE trac-admin ${TRACDIR}/${PROJECT} permission remove anonymous WIKI_MODIFY echo "TRAC : Granting these permissions to ${DEVUSER}" trac-admin ${TRACDIR}/${PROJECT} permission add ${DEVUSER} FILE_VIEW trac-admin ${TRACDIR}/${PROJECT} permission add ${DEVUSER} WIKI_CREATE trac-admin ${TRACDIR}/${PROJECT} permission add ${DEVUSER} WIKI_MODIFY exit 0 # Part two done fi