Reposicionar repositórios svn

2

Estou rodando o Subversion 1.6 no Apache 2.2 no FreeBSD 7.2.

Nosso servidor Apache / SVN está configurado para que, quando visitarmos o link , tenhamos uma lista de repositórios. Aqui está uma configuração de exemplo, por brevidade. A configuração atual envolve o LDAP, mas esperamos que isso não importe.

# All users can access this directory 
<Location />
DAV svn
SVNParentPath /data/svn
# list all repos under /data/svn
SVNListParentPath on

SSLRequireSSL

AuthName "Use your work password"
AUthType Basic
AuthUserFile /etc/apache22/htpasswd

Require User admin customer1 customer2
</Location>

Gostaria de dividir isso em três visualizações. Um para '/' (para pessoal administrativo), um para '/ repo1' (para cliente1) e outro para '/ repo2' (para cliente2), como o seguinte. No entanto, quando tento isso, recebo os seguintes erros:

  • Lado do cliente. Este erro é falso, porque não tenho uma cópia de trabalho existente. Estou tentando conferir uma nova cópia de trabalho:

    $ svn co https://svn.example.gov/repo1/
    svn: Repository moved permanently to 'https://svn.example.gov/repo1/'; please relocate
    
  • Lado do servidor:

    Jul  6 17:47:51 svn httpd[98216]: [error] [client 10.10.10.176] Could not fetch resource information.  [301, #0]
    Jul  6 17:47:51 svn httpd[98216]: [error] [client 10.10.10.176] (2)No such file or directory: Requests for a collection must have a trailing slash on the URI.  [301, #0]
    

Aqui está minha nova configuração de exemplo:

# All users can access this directory 
<Location />
DAV svn
SVNParentPath /data/svn
# list all repos under /data/svn
SVNListParentPath on

SSLRequireSSL

AuthName "Use your work password"
AUthType Basic
AuthUserFile /etc/apache22/htpasswd

Require User admin
</Location>

# Only customer1 can access this repo
<Location /repo1>
DAV svn
SVNPath /data/svn/repo1

Require User customer1
</Location>

# Only customer2 can access this repo
<Location /repo2>
DAV svn
SVNPath /data/svn/repo2

SSLRequireSSL

Require User customer2
</Location>
    
por Stefan Lasiewski 07.07.2010 / 02:57

1 resposta

2

As seções <Location /> e <Location /repo1> se aplicam ao caminho /repo1 URI e, portanto, ambas são processadas na ordem. Consulte o link .

Então você está repetindo algumas diretrizes, e aposto que nem todos estão felizes com isso. Em particular:

In a configuration block for a Subversion repository, either [SVNPath] or SVNParentPath must be present, but not both.

http://svnbook.red-bean.com/en/1.5/svn.ref.mod_dav_svn.conf.html

Você está se aplicando a /repo1 .

Eu também não sei como várias diretivas Require se comportam, e uma rápida verificação dos documentos não me esclarece, mas você pode experimentar e descobrir.

Sugiro começar colocando a visualização administrativa em algo como /admin em vez da raiz, para evitar a complicação de várias seções <Location /> que se aplicam ao mesmo tempo. Então, quando isso estiver funcionando, descubra como fatorar diretivas comuns para fazer uma configuração como o trabalho acima. (Talvez você já tenha feito isso, e então você pode pular para o passo dois.)

    
por 07.07.2010 / 08:30