Clonando repositórios Subversion remotos com svnsync
Clonar ou criar um mirror de um repositório svn pode ser um problema caso o usuário não tenha acesso ao servidor onde o repositório é hospedado, uma vez que o comando svnadmin (que faz o dump e load) trabalha apenas com o caminho local para o servidor.
Como parte integrante do pacote Subversion desde a versão 1.4, o svncync foi desenvolvido para facilitar e automatizar o trabalho de criar cópias ou mirrors de repositórios svn, precisando apenas de acesso de leitura ao repositório de origem.
O svnsync trabalha com URLs, assim não é necessário acesso ao sistema de arquivos do servidor de origem nem do destino, e apenas é necessário acesso de escrita (para commits) no servidor destino, e de um hook script que pode ser facilmente criado. Veja os passos a seguir:
# crie um novo repositorio: svnadmin create /CAMINHO/DESTINO # crie um hook script pre-commit-hook vazio: echo '#!/bin/bash' > /CAMINHO/DESTINO/hooks/pre-revprop-change # torne o script executável: chmod +x /CAMINHO/DESTINO/hooks/pre-revprop-change
Note que, se estiver contratando repositórios Subversion de uma empresa de hospedagem e não possuir acesso ao sistema de arquivos, basta solicitar ao seu suporte para criar o hook script como acima em seu novo repositório.
Assim que o repositório destino estiver criado, basta inicializar a conexão entre o repositório origem e destino, e sincronizar:
# inicializar a conexão dos repositorios: svnsync init file:///CAMINHO/DESTINO url://ORIGEM # sincronizar: svnsync sync file:///CAMINHO/DESTINO
Sendo url://ORIGEM a url de acesso do repositório o qual se deseja clonar.
Como pode ver, o svnsync, trabalha com URLs, assim é possível utilizá-lo com quaisquer dois repositórios, local ou remoto, e inclusive com qualquer protocolo (file://, http://, svn://, svn+ssh://). No exemplo utilizei file:// para demonstrar como trataria para clonar um repositório remoto em um local, mas o repositório destino também pode ser remoto, sem problemas, desde que haja permissão de escrita e o hook script pre-revprop-change.
Fonte: http://www.thoughtspark.org/node/10
Se você gostou deste artigo, inscreva-se em meu RSS feed!



Últimos Comentários