Diferenças de caminho do Subversion para svn e svn + ssh

10

[02:48] [root @ server: ~] ps ax | grep svn     23986? Ss 0:00 / usr / bin / svnserve -d -r / srv / svn Como você vê nos argumentos, meu diretório raiz svn é / srv / svn.

Agora, alguma mágica da máquina remota ...

Isso funciona:

> svn co svn://[email protected]/test-repo

Mas isso não:

> svn co svn+ssh://svn-user@<putty-session-name>/test-repo
'No repository found in 'svn+ssh://svn-user@<putty-session-name>/test-repo'

Brincando por algumas horas, descobri que aparentemente se eu usar o ssh tunnel, posso obter meu repo usando o seguinte:

> svn co svn+ssh://svn-user@<putty-session-name>/srv/svn/test-repo

... o que significa que devo especificar o caminho físico completo para o repositório. Huh?

    
por Andrejs Cainikovs 25.08.2009 / 02:04

4 respostas

13

Como o womble disse, de fato este é o 'recurso' do svn sobre o ssh.

Eu tinha o svn + ssh funcionando sem especificar o caminho completo para os repositórios porque o servidor svn tinha um script wrapper svnserve no lugar do binário svnserve original. Mais tarde, durante a atualização do subversion, esse script foi substituído pelo binário original.

Solução:

  1. Renomeie o svnserve para bin

    mv /usr/bin/svnserve /usr/bin/svnserve.bin
    
  2. Salve este script como / usr / bin / svnserve:

    #!/bin/sh
    exec /usr/bin/svnserve.bin -r /srv/svn "$@"
    
  3. Atualizar permissões

    chmod 755 /usr/bin/svnserve
    
por 26.08.2009 / 10:26
5

Isso porque o svn over SSH ( svn+ssh:// ) está acessando apenas um repositório subversion "localmente", usando o SSH como transporte e, portanto, você tem acesso a todo o sistema de arquivos. O Svnserve, ao contrário, recebe a instrução "inicie seus caminhos com /srv/svn e, portanto, não é necessário especificá-lo manualmente.

    
por 25.08.2009 / 02:40
3

Você pode editar o comando ssh login para usuários usando svn + ssh, editando o ~ / .ssh / authorized_keys do usuário do subversion. A linha de um usuário será semelhante a:

command="/usr/bin/svnserve -r /srv/svn [other svnserve options]" <key type> <user key> <key comment>

Existem mais truques de svn + ssh no svn book

    
por 26.08.2009 / 23:59
0

isto é mais uma questão por si só, mas está realmente relacionado com esta.

tendo configurado svn + ssh com chaves privadas / públicas, não consigo acessar meu repositório usando caminhos relativos desta forma:

svn co svn+ssh://svn@SERVERIP/simple-webapp-svn simple-webapp-svn

desde que eu estou recebendo este erro:

svn: URL 'svn+ssh://svn@SERVERIP/simple-webapp-svn' doesn't exist

mas apenas assim:

svn co svn+ssh://svn@SERVERIP/home/svn/projects/simple-webapp-svn simple-webapp-svn

Este é o arquivo authorized_keys2 que eu tenho dentro do diretório /home/svn/.ssh

$ sudo cat /home/svn/.ssh/authorized_keys2
command="/usr/bin/svnserve.bin -t --tunnel-user=USERNAME",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa [rsa-key] [user-note]

e o arquivo svnserve.bin sugerido por Andrejs em anterior responder

$ cat  /usr/bin/svnserve.bin 
#!/bin/sh
exec /usr/bin/svnserve -r /home/svn/projects "$@"

Eu até pensei em problemas de permissão, que estão listados aqui:

-rwxr-xr-x 1 root root 63684 2009-12-12 06:45 /usr/bin/svnserve
-rwxr-xr-x 1 root root    61 2010-08-25 17:19 /usr/bin/svnserve.bin

Eu realmente não consigo encontrar uma solução ...

    
por 25.08.2010 / 17:40