Clonando repositórios Subversion remotos com svnsync

Tags: , — June 1, 2008 @ 1:00 pm

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

If you enjoyed this post, make sure you subscribe to my RSS feed!

2 Comments »

  1. [...] por Silvio Cesar (silviocesarΘgulbf·com·br) – referência [...]

    Pingback by Clonando repositórios Subversion remotos com svnsync — August 27, 2008 @ 5:03 pm

  2. [...] por Silvio Cesar (silviocesarΘgulbf·com·br) – referência [...]

    Pingback by Clonando repositórios Subversion remotos com svnsync | Abiyaa — August 28, 2008 @ 8:42 am

RSS feed for comments on this post. TrackBack URI

Leave a comment