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