developサーバにて、プロジェクトを作成するシェルスクリプト

projectadd.sh

#!/bin/sh

if [ $# != 3 ]
then
  echo "Usage: $0 <project_name> <user_name> <password>"
  exit 1
fi

PROJECT_NAME=$1
SVN_DIR=/var/svn/${PROJECT_NAME}
TRAC_DIR=/var/trac/${PROJECT_NAME}

if [ -f ${SVN_DIR} ]
then
  echo "Directory ${SVN_DIR} already exists. Please remove it and try again."
  exit 1
fi

if [ -f ${TRAC_DIR} ]
then
  echo "Directory ${TRAC_DIR} already exists. Please remove it and try again."
  exit 1
fi

# create Subversion repository

mkdir ${SVN_DIR}
svnadmin create --fs-type=fsfs ${SVN_DIR}
chown -R apache:apache ${SVN_DIR}

cp ${SVN_DIR}/conf/svnserve.conf ${SVN_DIR}/conf/svnserve.conf.ORG
cat >> ${SVN_DIR}/conf/svnserve.conf <<EOF
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = ${PROJECT_NAME} Repository
EOF

cp ${SVN_DIR}/conf/passwd ${SVN_DIR}/conf/passwd.ORG
echo "$2 = $3" >>${SVN_DIR}/conf/passwd
chmod 600 ${SVN_DIR}/conf/passwd

cp ${SVN_DIR}/conf/authz ${SVN_DIR}/conf/authz.ORG
cat >>${SVN_DIR}/conf/authz <<EOF
[groups]
manager = $2
developer = $2
[/]
* = r

[${PROJECT_NAME}:/]
@manager = rw

[${PROJECT_NAME}:/tags]
@manager = rw

[${PROJECT_NAME}:/branches]
@developer = rw

[${PROJECT_NAME}:/trunk]
@developer = rw
EOF

svn mkdir file://${SVN_DIR}/trunk file://${SVN_DIR}/tags file://${SVN_DIR}/branches -m "Create trunk, tags, branches."


# create Trac project

mkdir ${TRAC_DIR}
trac-admin ${TRAC_DIR} initenv ${PROJECT_NAME} sqlite:db/trac.db svn ${SVN_DIR} /usr/share/trac/templates

cp trac-0.10.3.1-ja-1/contrib/trac-post-commit-hook ${SVN_DIR}/hooks/
chmod +x ${SVN_DIR}/hooks/trac-post-commit-hook

cat >> ${SVN_DIR}/hooks/post-commit <<EOF
#!/bin/sh

REPOS="\$1"
REV="\$2"

export LANG=ja_JP.UTF-8

LOG=\`/usr/bin/svnlook log -r \$REV \$REPOS\`
AUTHOR=\`/user/bin/svnlook author -r \$REV \$REPOS\`

/usr/bin/python ${SVN_DIR}/hooks/trac-post-commit-hook \\
	-p "${TRAC_DIR}" \\
	-r "\$REV" \\
	-u "\$AUTHOR" \\
	-m "\$LOG"
EOF

chmod +x ${SVN_DIR}/hooks/post-commit
chown -R apache:apache ${TRAC_DIR}
chmod -R a+wr ${TRAC_DIR}

projectdel.sh

#!/bin/sh

if [ $# != 1 ]
then
  echo "Usage: $0 <project_name>"
  exit 1
fi

PROJECT_NAME=$1
SVN_DIR=/var/svn/${PROJECT_NAME}
TRAC_DIR=/var/trac/${PROJECT_NAME}

#if [ ! -f ${SVN_DIR} ]
#then
#  echo "Directory ${SVN_DIR} does not exist."
#  exit 1
#fi
#
#if [ ! -f ${TRAC_DIR} ]
#then
#  echo "Directory ${TRAC_DIR} does not exist."
#  exit 1
#fi

rm -fr ${SVN_DIR}
rm -fr ${TRAC_DIR}