Brasil

22 abril 2009 ~ 3 Comentários, deixe o seu »

Cuidado ao fazer migração de repositório subversion

Este final de semana eu fiz uma migração de um servidor subversion. Como eu esperava, teria algumas dores de cabeça pois o subversion é muito sensível. Fiz muitos testes durane o processo e consegui uma maneira que funcionasse.

No final das contas consegui migrar todo o repositório de um servidor para outro e manter a mesma URL de modo que ficasse transparente para os clients, evitando a necessidade de rodar um “svn switch –relocate” em cada working copy.

O problema é que quando fui usar hoje, dois dias depois, eu consegui acessar o repositório pela web, mas não consegui fazer um checkout.

A Lei de Murphy está aí para isso :-)

Depois de perquisar um pouqinho, descobri que foi uma configuração que fiz por último e que é uma verdadeira pegadinha. No caso eu estou usando o Apache2 com mod_dav.

A pegadinha é que você não pode configurar o DocumentRoot com o mesmo path do SVNParentPath. Tem outros casos que causam o mesmo problema, basicamente o fato de existir um diretório no DocumentRoot com o mesmo nome do repositório controlado pelo DAV gera um conflito e o servidor se perde.

Mais informações sobre isso podem ser encontradas em: http://subversion.tigris.org/faq.html#301-error

Espero que seja útil!

Abraços e até a próxima.

3 Respostas para “Cuidado ao fazer migração de repositório subversion”

  1. Antônio Pessoa 6 junho 2009 at 2:14 AM Permalink

    Ainda bem que existe o Google nessas horas, pois eu cai na mesma pegadinha. E a página, apesar de me dizer exatamente o que está acontecendo, não ajuda muito (já havia chegado nela antes de chegar aqui).

    É muito comum e até lógico as duas entradas terem o mesmo valor. Gostaria de saber como você resolveu o seu caso.

    Comigo ficou mais ou menos assim para me livrar do erro:

    DocumentRoot “/usr/home/svn”
    (…)

    DAV svn
    SVNParentPath /usr/home/svn
    (…)

    (…)

  2. Antônio Pessoa 6 junho 2009 at 2:18 AM Permalink

    Ops, esqueci das tags :P .

    [VirtualHost svn.mydomain.com.br:80]
    ServerAdmin admin@mydomain.com.br
    DocumentRoot “/usr/home/svn”
    ServerName svn.mydomain.com.br
    ServerAlias http://www.svn.mydomain.com.br
    ErrorLog “/var/log/svn.mydomain.com.br-error_log”
    CustomLog “/var/log/svn.mydomain.com.br-access_log” common
    [Location /]
    DAV svn
    SVNParentPath /usr/home/svn
    AuthzSVNAccessFile /usr/local/etc/svn_authz.conf
    Satisfy Any
    Require valid-user

    AuthType Basic
    AuthName “Repositorios SVN EMPRESA”
    AuthUserFile /usr/local/etc/svnpasswd
    [/Location]
    [Directory /svn]
    AllowOverride None
    Order Deny,Allow
    Allow from all
    [/Directory]
    [/VirtualHost]

  3. Rafael Lima 21 junho 2009 at 6:15 PM Permalink

    Antônio Pessoa,

    No meu caso eu só coloquei o DocumentRoot diferente do SVNParentPath.
    No meu não tenho a diretiva [Directory /svn]

    Abraço


Deixe seu Comentário