Skip to content

Mysvnadmin: Gerenciador do Subversion

Já faz algum tempo que gerencio múltiplos projetos no subversion, porém toda vez que alguém solicitava a criação de um novo repositório, demorava praticamente cerca de 20 minutos para criar o repositório com o svnadmin create logo em seguida configurar o apache e todo os procedimentos descritos no livro do subversion.
O script abaixo agiliza o processo de criação de um novo repositório.

#!/bin/bash
#
# Copyright 2006 Kaio Rafael de Souza Barbosa
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ---------------------------------------------------------
# Este script cria repositorio, muda a permissao para o apache
# poder ler e escrever os commits realizados pelos usuarios
#
# Para mais detalhes do subversion acesse:
# http://svnbook.red-bean.com/nightly/pt_BR/svn-book.html#svn.serverconfig.httpd
# http://svnbook.red-bean.com/nightly/pt_BR/svn-book.html#svn.reposadmin


# Variables

svn_root_home=/home/kaio/web-svn # diretorio que armazena todos os repositorios do subversion
svn_adm_cmd=/usr/bin/svnadmin # comando do svnadmin
apache_user=www-data # usuario que executa o apache
apache_group=www-data # grupo do usuario que execua o apache
svn_pass=/etc/apache2/senha # senha dos usuarios do subversion
svn_access_file=/etc/apache2/projetos # diretorio com as permissoes do subversion
svn_tmp=/tmp/repos # arquivo temporario
svn_web_page=/svn # endereco web que ficara o repositorio http://server/svn/nome_repositorio
nome_empresa="Free Software Foundation" # Nome da sua empresa

# Functions

create_svn(){
echo -n "Entre com o nome do repositorio a ser criado: "
read svn_repos

# verifica se o repositorio ja existe

if [ -d ${svn_root_home}/${svn_repos} ];then
echo "Repositorio ${svn_repos} ja existe"
exit 1

else

if `${svn_adm_cmd} create ${svn_root_home}/${svn_repos}` ; then
echo "Repositorio ${svn_repos}, criado com sucesso!!"
else
echo "Erro na criacao do repositorio ${svn_repos}"
exit 1
fi
fi
# Mudando as permissoes de dav lock e db

echo "Mudando as permissoes de dav, lock e db"

chmod g+w ${svn_root_home}/${svn_repos}/dav ${svn_root_home}/${svn_repos}/locks ${svn_root_home}/${svn_repos}/db
chmod g+s ${svn_root_home}/${svn_repos}/dav ${svn_root_home}/${svn_repos}/locks ${svn_root_home}/${svn_repos}/db

chown -R ${apache_user}:${apache_group} ${svn_root_home}/${svn_repos}/dav
chown -R ${apache_user}:${apache_group} ${svn_root_home}/${svn_repos}/locks
chown -R ${apache_user}:${apache_group} ${svn_root_home}/${svn_repos}/db

touch ${svn_access_file}/${svn_repos}

sleep 1

# Imprimindo a saida para o Apache
cat <<> $svn_tmp
###########################
# Projeto ${svn_repos}
###########################

DAV svn
SVNPath ${svn_root_home}/${svn_repos}
AuthType Basic
AuthName "${svn_repos} em ${nome_empresa} "
AuthUserFile ${svn_pass}
AuthzSVNAccessFile ${svn_access_file}/${svn_repos}
Require valid-user
Allow from all

EOF

echo "Adicione as linhas abaixo no arquivo do apache"
echo " "
cat $svn_tmp


}

usage(){
echo "$(basename $0) opcoes"
echo "Opcoes"
echo "--create : Cria um repositorio"
echo "--help : Imprime esta ajuda"
}

# Main Program

if [ $(id -u) -eq 0 ];then
if [ $# -eq 0 ]; then
usage
else
case $1 in
--create) create_svn;;
--help) usage;;
*) echo "Parametro $1, desconhecido";;
esac
fi
else
echo "Voce nao e' o root"
exit 1
fi

Comments are closed.