Subversion error : 리포지토리를 영구적으로 이동하여 재배치하십시오


23

서버에 서브 버전과 아파치를 설정했습니다.

내 웹 브라우저를 통해 탐색하면 잘 작동합니다 ( http://svn.host.com/reposname ). 그러나 내 컴퓨터에서 체크 아웃하면 다음 오류가 발생합니다.

Command: Checkout from http://svn.host.com/reposname, revision HEAD, Fully recursive, Externals included  
Error: Repository moved permanently to 'http://svn.host.com/reposname/'; please relocate  

아파치의 오류 로그를 확인했지만 아무 말도하지 않습니다. (지금은-편집 참조)

내 저장소는 / var / www / svn / repos /에 저장됩니다.

내 웹 사이트는 / var / www / vhosts / x / ...에 저장됩니다.

하위 도메인의 conf 파일은 다음과 같습니다.

<Location />
   DAV svn
   SVNParentPath /var/www/svn/repos/

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /var/www/svn/auth/svn.htpasswd
   Require valid-user
</Location>

인증이 제대로 작동합니다.

아무도 이것을 일으키는 원인을 알고 있습니까?

-- 편집하다

그래서 아파치를 다시 시작하고 다시 시도했는데 오류 메시지가 표시되지만 실제로 도움이되지는 않습니다. 누구나 그것이 무엇을 의미하는지 알고 있습니까?

[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] Could not fetch resource information.  [403, #0]
[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] (2)No such file or directory: The URI does not contain the name of a repository.  [403, #190001]

-편집 2

내가하면 svn info유용한 것이 없습니다.

[root@server domain.com]# svn info http://svn.domain.com/repos/
Username: username
Password for 'username':
svn: Repository moved permanently to 'http://svn.domain.com/repos/'; please relocate

또한 로컬 체크 아웃 ( svn checkout file:///var/www/svn/repos/reposname)을 시도했지만 정상적으로 작동합니다 (추가 / 커밋도 정상적으로 작동합니다). 그래서 그것은 아파치와 관련이있는 것 같습니다.

다른 정보들 :

  • CentOs 5.3을 사용하고 있습니다.
  • 플레 스크 9.3
  • Subversion, 버전 1.6.9 (r901367)

-편집 3

리포지토리를 이동하려고 시도했지만 아무런 차이가 없었습니다.

selinux도 비활성화되어있어서 그렇지 않습니다.


1
Options +indexessvn 위치에서 유용한 것을하지 않아야합니까?
Zoredache

인증 / 인증과 관련하여 일시적으로 비활성화하는 것을 시도 했습니까?
Zoredache

나는 모든 저장소에 대한 개요를 보여 주려고 노력했다 (나중에 다른 명령이 있음을 알았습니다). 나는 또한 인증을 제거했지만 아무것도 해결하지 못했습니다 (인증은 실제로 잘 작동합니다. 사용자 이름 / 비밀번호를 요구하고 실제 조합 만 허용합니다).
Bart S.

답변:


22

나는 이것을 최근에 가지고 있었지만 URL을 잊어 버린 것으로 밝혀졌다 :)

당신이해야 할 한 가지는 svn Location이 아파치 제공 웹 사이트와 겹치지 않도록하는 것입니다. 즉, DocumentRoot를 / www로 설정하고 svn Location을 / www / svn으로 설정하면 문제가 발생합니다. Apache는 무엇을 제공해야하는지 알지 못합니다 (예 : svn 특수 처리기) 또는 간단한 http 핸들러).

이에 대한 FAQ 항목을 참조하십시오 .


정답이 될 수 있지만 여기에 관련된 또 다른 게시물이 있습니다 : forum.webfaction.com/viewtopic.php?id=2423 .
Paul Kroon

1
와우, 나는 이미 이것에 대해 알고 있었지만 나는 그것을 다시 시도했다고 생각했다. 새로운 저장소를 만들었고 효과가있었습니다. 나는 이것이 왜 그런지 혼란 스럽기 때문에 내 서버에 FTP를 넣고 하위 도메인 (plesk로 생성)의 httpdocs 디렉토리에 test (내 저장소와 동일)라는 디렉토리가 있음을 알았습니다. 삭제했는데 이제 작동합니다. 도와 주셔서 감사합니다.
Bart S.

1
하나의 일반적인 시나리오에 대해 조금 자세히 설명합니다. 가상 호스트 설정이 있고 루트에 SVN을 원하는 경우 (예 : svn.example.com 은 리포지토리 URL) "DocumentRoot / svn"을 설정하지 말고 VirtualHost 내부의 "<Directory / svn>"블록을 루트 경로에 대한 DAV svn 옵션을 구성하십시오. 이로 인해 Apache가 DAV 핸들러와 해당 내부 핸들러간에 혼동되는 문제가 발생합니다. VirtualHost 블록에는 DocumentRoot 지시문이 없어야합니다. 대신 루트 경로에 대한 DAV svn 옵션을 구성하려면 "<Location />"블록을 사용하십시오.
nezroy

예를 들어 구성에 Alias ​​지시문을 넣은 Alias svn /repositories다음에 모든 것을 설정했습니다 <Location /svn/ >. 신비스럽게도 한 달 동안 완벽하게 작동 한 다음 수요일 오후에는 티타임으로 중단되었습니다. 저장소가 "/"인 경우 DocumentRoot 지시문과 겹치게됩니다.
매트 코놀리

완벽하게 작동했습니다! DocumentRoot 문제였습니다! +1
Feiticeir0

2

체크 아웃을 시도하십시오 http://svn.host.com/reposname/(후행 슬래시 참고).


나는 subversion이 그것을 제거합니다.
Bart S.

//, 이것은 나를 위해 일했다.
Nathan Basanese

2

이 웹을 확인하십시오 : http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

아마도 별칭이 dav_svn.mod와 동일한 위치를 가리키고 리포지토리에 액세스하는 동안 apache와 dav_svn 사이에 경쟁 조건이 있습니다.

제공된 기사에서 더 잘 설명됩니다.

dav_svn.conf에서 :

  <Location /svn>  #Alias we are talking about
  DAV svn

apache_site.conf에서

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName svn.za11.pl

    #Alias /svn  "/mnt/nfs/svn/"  ###Comment out or change this alias
    DocumentRoot /mnt/nfs/svn/
    <Directory /mnt/nfs/svn/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        AuthType Basic 
        AuthName "Subversion Repository"
        AuthUserFile /etc/apache2/dav_svn.passwd
        Require valid-user
    </Directory> 
... rest of the file

1
이 링크는 작동하지 않으며 대체 할 가능성이 없습니다.
sysadmin1138

//이 답변을 업데이트 하시겠습니까?
Nathan Basanese

1

svn.mydomain.com/sites/ 내 호스트에 repo를 사용하여 vhost 설정 이 DocumentRoot 및 Location 블록이 있습니다. documentroot를 제거하면이 문제가 해결되었습니다.


1

RPM 기반 서브 버전 및 아파치 설치가있는 FC14 시스템에서 Apache가 제공하는 html 트리 아래에 실수로 저장소를 넣을 때이 오류가 발생했습니다.

SVNParentPath (/etc/httpd/conf.d/subversion.conf에 있음)는 DocumentRoot 외부의 디렉토리를 가리켜 야합니다.

레포를 옮기고 문제가 해결되었습니다.

이것이 도움이되기를 바랍니다.


1

나는 이것이 오래되었다는 것을 알고 있지만 같은 문제가 있기 때문에 Google에서 발견했습니다. 컴퓨터 나 서버 방화벽에 의해 포트 7080이 차단되지 않도록하십시오


0

당신이하는 svn checkout것이 아닌 svn update기존 저장소 (?)에서 보입니다 .

그렇다면 다음을 수행하십시오.

svn switch --relocate http://svn.host.com/reponame


아니요, 오류 메시지에서 볼 수 있듯이 "명령 : Checkout from ..."이라는 메시지가 표시되었습니다. 실제로 새 체크 아웃을 시도하고 있습니다.
Bart S.

0

영구적으로 이동 했습니까? 당신은 HTTPFox 또는 뭔가 아파치가 저장소에 적합한 상태 코드를 제공하고 있는지 확인 같은 (해야 할 200/OK). 상태 코드 301가 "영구적으로 이동 한"URL에 해당 한다고 생각 하며 svn 클라이언트가 말하는 것과 비슷합니다.


Firebug와 wget은 모두 200 OK를 제공합니다. 그러나 내가 말했듯이, 브라우저를 통해 탐색하면 (서핑으로 http://svn.server.com/repos) 훌륭하게 작동하며 "repos-Revision 0 : /"및 모든 것을 얻습니다. 체크 아웃 할 때만 문제가 발생합니다.
Bart S.

0

아마도 대화에서 약간 늦었지만 아파치 설정에서 Alias를 사용하여 후행 '/'를 처리 할 때 이것을 볼 수 있습니다 : Alias ​​/ svn / path / to / svn /


0

또한 Alias ​​지시문이 svn repos의 위치에 맵핑되지 않아야합니다. 나는 최근에 이것을 가지고 있었다

Alias /svn /var/lib/svn
<Location /svn>
...
</Location>

별명과 위치 지시문은 동일한 경로에 적용됩니다.


0

나는 체크 아웃 할 때가 아니라 커밋했을 때 비슷한 문제가있었습니다.

이유? 이 폴더 "obj \ Debug \ TempPE", "TempPE"폴더가 저장소로 커밋 할 수없는 이상한 이유로

솔루션? ... 프로젝트의 다른 모든 폴더를 하나씩 커밋하고 SVN 서버에서 해당 위치를 제거하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.