[server] svn 및 svn + ssh의 Subversion 경로 차이

[02:48] [root @ 서버 : ~] ps ax | grep svn 23986? Ss 0:00 / usr / bin / svnserve -d -r / srv / svn 인수에서 볼 수 있듯이 내 svn 루트 디렉토리는 / srv / svn입니다.

이제 원격 컴퓨터의 마법이 …

이것은 작동합니다 :

> svn co svn://svn-user@domain.com/test-repo

그러나 이것은 아닙니다 :

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

ssh tunnel을 사용하면 겉보기 에 두 시간 동안 놀았는데 다음을 사용하여 내 repo를 얻을 수 있습니다.

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

… 이것은 repo에 대한 실제 경로를 지정해야 함을 의미합니다. 응?



답변

womble이 말했듯이, 실제로 이것은 ssh에 대한 svn의 ‘기능’입니다.

svn 서버가 원래 svnserve 바이너리 대신 svnserve 래퍼 스크립트를 가지고 있기 때문에 저장소에 대한 전체 경로를 지정하지 않고 svn + ssh가 작동했습니다. 나중에 Subversion 업데이트 중에이 스크립트는 원래 바이너리로 덮어 쓰기되었습니다.

해결책:

  1. svnserve를 bin으로 이름 바꾸기

    mv /usr/bin/svnserve /usr/bin/svnserve.bin
    
  2. 이 스크립트를 / usr / bin / svnserve로 저장하십시오.

    #!/bin/sh
    exec /usr/bin/svnserve.bin -r /srv/svn "$@"
    
  3. 권한 업데이트

    chmod 755 /usr/bin/svnserve
    

답변

SSH ( svn+ssh://)를 통한 svn은 SSH를 전송으로 사용하여 “로컬로”하위 버전 저장소에 액세스하기 때문에 전체 파일 시스템에 액세스 할 수 있기 때문입니다. 반대로 Svnserve는 “로 경로를 시작 /srv/svn하므로 수동으로 지정할 필요가 없습니다.


답변

서브 버전 사용자의 ~ / .ssh / authorized_keys를 편집하여 svn + ssh를 사용하는 사용자의 ssh login 명령을 편집 할 수 있습니다. 사용자 라인은 다음과 같습니다.

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

svn 책 에는 더 많은 svn + ssh 트릭이 있습니다


답변

이것은 그 자체로 질문과 비슷하지만 실제로 이것과 관련이 있습니다.

개인 / 공개 키를 사용하여 svn + ssh를 설정하면이 방법으로 상대 경로를 사용하여 내 저장소에 액세스 할 수 없습니다.

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

이 오류가 발생하기 때문에 :

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

그러나 오직 그렇게 :

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

이것은 내가 /home/svn/.ssh 디렉토리에있는 authorized_keys2 파일입니다.

$ 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]

이전 답변 에서 Andrejs가 제안한 svnserve.bin 파일

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

여기에 나열된 권한 문제에 대해서도 생각했습니다.

-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

나는 정말로 해결책을 제시 할 수 없다 …


답변