Instalando e configurando um servidor SVN

Instalação:

apt-get install subversion

Configuração:

Adicionando um usuário para o SVN:

adduser svn

Criando um repositório:

svnadmin create /home/svn/repositorios

Importando um projeto:

svn import /home/diretorio file:///home/svn/repositorios/teste -m "Projeto Importado"

Segurança: Em /home/svn/repositorios/conf

Para controlar acessos aos repositórios svnserve.conf:

anon-access = read
auth-access = write
password-db = passwd

Caso queira impedir o acesso troque read/write por none

Em passwd, adicione os usuários/senhas:

[users]
linuxuser = minhasenha

Cliente: Se o repositório estiver na própria máquina, basta executar o seguinte:

$ svn checkout file:///home/svn/teste teste
A teste.cpp
Checked out revision 1.

Para enviar as modificações para o repositório o usuário deve pertencer ao grupo “svn” já que é necessário permissão de escrita:

# usermod -G svn linuxuser

Tal alteração só surtirá efeito no próximo login.

Em seguida basta executar:

$ svn commit -m "apenas um teste"
Sending teste.cpp
Transmitting file data .
Committed revision 2.

Para atualizar a cópia local (o checkout é efetuado uma única vez):

$ svn update
U teste.cpp
Updated to revision 2.

Para atualizar para uma revisão específica (reverter modificações, por exemplo):

$ svn update -r 1
U teste.cpp
Updated to revision 1.

Agora devemos configurar, por padronização um “start|stop” para o svnserv.

#!/bin/sh
# /etc/init.d/svnserv
# Author: Flavio Torres
#
start() {
svnserve -d
}
stop() {
kill -9 `pgrep svnserve` 2>/dev/null
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
*)
echo "Usage: $0 start|stop|restart"
exit 1
;;
esac
  chmod 755 /etc/init.d/svnserve

Para iniciar:

/etc/init.d/svnserve start

Agora devemos configurar o svnserve para iniciar junto com o debian, vamos utilizar as opções default

# update-rc.d -f /etc/init.d/svnserv defaults
Adding system startup for /etc/init.d/svnserv ...
/etc/rc0.d/K20svnserv -> ../init.d/svnserv
/etc/rc1.d/K20svnserv -> ../init.d/svnserv
/etc/rc6.d/K20svnserv -> ../init.d/svnserv
/etc/rc2.d/S20svnserv -> ../init.d/svnserv
/etc/rc3.d/S20svnserv -> ../init.d/svnserv
/etc/rc4.d/S20svnserv -> ../init.d/svnserv
/etc/rc5.d/S20svnserv -> ../init.d/svnserv

Pronto.

Acessando remotamente:

$ svn checkout svn://www.host.com.br/home/svn/repositorios/teste
A teste.cpp
Checked out revision 2.

Agora, ao efetuarmos um “commit” será requisitado um usuário/senha.

Caso você esteja autenticando com um outro usuário diferente do seu usuário do svn faça:

$ svn checkout --username=usersvn svn://www.host.com.br/home/svn/repositorios/teste

Deixar uma resposta