Depois de instalar, configurar e implantar os servidores SVN na empresa, o segundo desafio foi a sincronização dos controles de versões dos servidores. Inicialmente resolvi o problema com um simples e básico agendamento de backup e restore. Mas entrei em desespero quando fui verificar os servers e constatei que algo falhou. Para falar a verdade não consegui nem dormir esta madrugada enquanto não encontrei a falha, pois são muitos projetos e linha de código. Claro que tenho backup mas o SVN é SVN. Então parti para uma solução mais descente a sincronização de servers. Então deixo a seguir uma receita de bolo, ressalto que o ambiente utilizado foi o SLES 11 (SUSE Linux Enterprise Server 11).

1 – Crie o repositório na máquina destino.

# cd /srv/svn/repos/
# svnadmin create PROJETO
# mkdir PROJETO/dav
# chown -R wwwrun.root PROJETO/

2 – Entre na pasta hooks do PROJETO  e insira o conteúdo abaixo no arquivo pre-revprop-change

#!/bin/sh
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"
exit 0

3 – Agora execute o comando para iniciar o repositorio sincronicado

# svnsync init file:///srv/svn/repos/PROJETO-DESTINO  http://IP-SERVIDOR/repos/PROJETO-ORIGEM
Propriedades copiadas para revisão 0.

4 – Finalmente a sincronização:

# svnsync sync file:///srv/svn/repos/UniversalTerm  
Transmitindo dados do arquivo ................................
Commit da revisão 1.
Propriedades copiadas para revisão 1.
Transmitindo dados do arquivo ..
Commit da revisão 2.
Propriedades copiadas para revisão 2.
Transmitindo dados do arquivo .

E pronto ! Agora basta agendar no crontab e dormir em paz (AMÉM)…