quinta-feira, 7 de janeiro de 2010

Administração do SVN

Introdução

Esse procedimento tem o objetivo instruir a administração básica do SVN no processo de sincronizar repositórios em diferentes localidades.

  • Servidor Cairo - 172.20.30.230 = Repositório de todos os projetos, exceto NFe no qual ele é apenas um espelho.
  • Servidor SJC - 172.20.40.190 = Repositório apenas do NFe, espelhado no Cairo.

  • Comando utilizado “svnsync”

O sincronismo entre repositórios ocorre entre um repositório de origem e um repositório de destino. No caso de Finnet o repositório de origem é o repositório utilizado para comitar e subir as alterações e o repositório de destino, é uma copia da origem, e é utilizado para se fazer o checkout. Para realizar o sincronismo, primeiramente, devemos criar o arquivo “pre-revprop-change” e acrescentar o seguinte conteúdo, tanto no destino como na origem.

# cd /repo_dir/hooks/
# vi pre-revprop-change
#!/bin/bash
echo 0

Após a criação do arquivo setar a permissão abaixo na origem e no destino

$ chmod a+x hooks/pre-revprop-change

Depois editar o “conf/svnserve.conf conforme a indicação abaixo:

No repositório de Origem onde os dados são comitados a configuração será, leitura para acesso anônimo e leitura/escrita para acesso autenticado, conforme mostrado abaixo

$ cd /repo_dir/conf/
$ vi svnserve.conf
  anon-access = read
auth-access = write

No repositório de Destino, utilizado para fazer o checkout a configuração será, leitura/escrita para acesso anônimo e deverá ser comentada a linha de acesso autorizado.

$ cd /repo_dir/conf/
$ vi svnserve.conf
 anon-access = write
# auth-access = write

Após os procedimentos acima, o ambiente esta preparado e já podemos iniciar o sincronismo. o SVN trabalha fechando um túnel entre o Destino e a Origem. Abaixo um exemplo do comando a ser utilizado.

$ svnsync init svn://172.20.30.16/media/Canada/repos/nfe2/ svn://172.20.40.190/home/desenv/repositorio/nfe
(Repositório de Destino) (Repositório de Origem)

Ao fechar o túnel o sincronismo pode ser iniciar com o comando abaixo. Requisitando apenas o sincronismo para o destino.

$ svnsync sync svn://172.20.30.16/media/Canada/repos/nfe2/

No início do sincronismo o repositório de destino estra no estado de lock para previnir alterações e checkouts. Caso ocorra algum problema no sincronismo e ele seja interrompido antes do termino normal seu estado continua como lock. Os futuros sincronismos retornaram um erro com a informação “held by”. Será preciso “destravar” o repositório com o comando abaixo:

$ svn pdel --revprop -r 0 svn:sync-lock file://`pwd`/dest 

Outra necessidada pode ser a mudança do endereço de Origem gravado no repositório de Destino. para isso devemos utilizar o comando abaixo:

$ svn propset svn:sync-from-url --revprop -r 0 svn://nova_origem svn://destino_a_ser_alterado
$ svn propset svn:sync-from-url --revprop -r 0 svn://172.20.30.230/home/desenv/repositorio/nfe/ svn://172.20.30.168/home/desenv/repositorio/nfe/

Nenhum comentário: