Ошибка Subversion: хранилище перемещено навсегда, чтобы переместить


23

Я настроил Subversion и Apache на моем сервере.

Если я просматриваю его через свой веб-браузер, он работает нормально ( 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  

Я проверил журнал ошибок Apache, но он ничего не говорит. (теперь - см. редактировать)

Мои репозитории хранятся в: / 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>

Аутентификация работает отлично.

Кто-нибудь знает, что может быть причиной этого?

-- Редактировать

Поэтому я перезапустил apache (снова) и попробовал снова, и теперь он выдает мне сообщение об ошибке, но это не очень помогает. У кого-нибудь есть идея, что это значит?

[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), и это прекрасно работает (также отлично работает добавление / принятие). Так что, похоже, это как-то связано с apache.

Некоторая другая информация:

  • Я использую CentOs 5.3
  • Plesk 9.3
  • Subversion, версия 1.6.9 (r901367)

- Редактировать 3

Я пытался переместить репозитории, но это не имело никакого значения.

selinux отключен, так что это не так.


1
Почему у вас Options +indexesэто не должно делать что-то полезное в SVN месте.
Зоредаче

Вы пытались временно отключить что-либо, связанное с аутентификацией / авторизацией?
Зоредаче

Я попытался заставить его показать мне обзор всех репозиториев (позже я узнал, что для этого есть другая команда), я удалил его. Я также удалил аутентификацию, но она ничего не решала (Auth на самом деле работает нормально, запрашивает имя пользователя / пароль и принимает только реальную комбинацию).
Барт С.

Ответы:


22

У меня было это недавно ... но оказалось, что я забыл URL :)

Одна вещь, которую вы должны сделать, это убедиться, что ваше местоположение SVN не перекрывает любые Apache-обслуживаемые сайты. т. е. если вы установите для DocumentRoot значение / www, а для svn Location - / www / svn ... тогда у вас возникнут проблемы - Apache не будет знать, с чем его следует обслуживать (т. е. специальные обработчики svn или прямой http-обработчик).

Смотрите запись FAQ для этого .


Кажется, что это может быть правильный ответ, но вот еще один возможный пост, связанный с этим: forum.webfaction.com/viewtopic.php?id=2423 .
Пол Кроон

1
Ух ты, я уже знал об этом, но подумал, что попробую еще раз. Я создал новый репозиторий, и это сработало. Я был озадачен тем, почему это так, поэтому я зашел по FTP на свой сервер и обнаружил, что в каталоге httpdocs субдомена (созданного plesk) есть каталог test (такой же, как мой репозиторий). Я удалил его, и теперь оно работает. Спасибо за помощь.
Барт С.

1
Разобраться немного по одному общему сценарию. Если у вас есть настройка виртуального хоста и вы хотите, чтобы SVN находился в корневом каталоге (например, svn.example.com - это URL вашего репо), НЕ устанавливайте «DocumentRoot / svn», а затем используйте блок «<Directory / svn>» внутри вашего VirtualHost, чтобы настройте параметры DAV svn для корневого пути. Это вызовет проблему, когда Apache запутается между обработчиком DAV и его внутренними обработчиками. В вашем блоке VirtualHost не должно быть директивы DocumentRoot. Вместо этого используйте блок <Location />, чтобы настроить параметры DAV svn для корневого пути.
Незрой

Я поместил в свой конфиг директиву Alias, например, Alias svn /repositoriesи затем все настроил <Location /svn/ >. Проблема была точно такой же, как в ссылке FAQ, хотя таинственным образом она работала в течение месяца, а затем остановилась в среду днем ​​во время чаепития. Если ваш репозиторий находится в «/», то у вас будет совпадение с вашей директивой DocumentRoot.
Мэтт Коннолли

Работало отлично! Это была проблема DocumentRoot! +1
Feiticeir0


2

Проверьте этот веб-сайт: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

Вероятно, псевдоним указывает на то же место, что и congfigured, - 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

//, обновить этот ответ?
Натан Басанезе

1

У меня есть настройка vhost с моим репозиторием, на svn.mydomain.com/sites/ моем vhost был блок DocumentRoot и Location. Удаление documentroot решило эту проблему.


1

Я получил эту ошибку, когда я по ошибке поместил репозиторий в html-дерево, обслуживаемое Apache, на моей машине FC14 с RPM-установками Subversion и Apache.

SVNParentPath (в /etc/httpd/conf.d/subversion.conf) должен указывать на каталог вне DocumentRoot.

Я переместил репо, и проблема ушла.

Надеюсь это поможет.


1

Я знаю, что это старый, но я нашел его в Google, потому что у меня была та же проблема. Убедитесь, что порт 7080 не заблокирован брандмауэром компьютера или сервера


0

Похоже, что вы не делаете svn checkout, а скорее svn updateв существующем хранилище (?).

Если так, сделайте это:

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


Нет, как вы можете видеть в сообщении об ошибке, которое я дал, оно говорит: «Команда: извлечение из ...» Я действительно пробую новую проверку.
Барт С.

0

Переехал навсегда? Можете ли вы что-то вроде HTTPFox или что-то еще и убедиться, что Apache выдает правильный код состояния для вашего хранилища (должно быть 200/OK). Я полагаю, что код состояния 301соответствует URL, который «переместился навсегда», и это звучит так, как говорит клиент svn.


Firebug и wget дают 200 OK. Но, как я уже сказал, если я просматриваю его через свой браузер (с помощью серфинга http://svn.server.com/repos), он прекрасно работает, я получаю «РЕПО - Редакция 0: /» и все остальное. Проблема возникает только тогда, когда я делаю заказ.
Барт С.

0

Может быть, немного поздно в разговоре, но я вижу это при использовании псевдонима в конфигурации apache для работы с завершающим символом '/': Alias ​​/ svn / path / to / svn /


0

Вы также должны убедиться, что директива Alias ​​не сопоставлена ​​с местоположением репозиториев SVN. У меня было это недавно, когда у меня было

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

где псевдоним и директива location применяются к одному и тому же пути.


0

У меня просто была похожая проблема не при ПРОВЕРКЕ, а когда был сделан COMMIT.

Причина? эта папка "obj \ Debug \ TempPE", по какой-то странной причине, папка "TempPE" не может КОММИТИРОВАТЬ ее в хранилище

Решение? ... УДАЛИТЕ все остальные папки проекта одну за другой и удалите это местоположение с сервера SVN.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.