Странная ошибка Apache2.2 SVN, "Ожидаемый формат хранилища" 3 "или" 5 "; найденный формат" 9 ""
У меня был репозиторий, к которому я мог получить доступ, используя TortoiseSVN, только с того же компьютера, на котором работала служба Subversion win32, и она работает некоторое время. Я решил попытаться настроить mod_dav_svn, чтобы иметь возможность получить его из других источников. Когда я пытаюсь получить к нему доступ, я получаю эту ошибку в браузере:
<D:error>
<C:error/>
<m:human-readable errcode="165005">
Could not open the requested SVN filesystem
</m:human-readable>
</D:error>
... и эти ошибки в журнале:
(20014)Internal error: Expected repository format '3' or '5'; found format '9'
Could not fetch resource information. [500, #0]
Could not open the requested SVN filesystem [500, #165005]
Could not open the requested SVN filesystem [500, #165005]
Вот что в моем.conf:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
а также
DAV svn
SVNPath e:/dev/.svn
Я поместил /.svn, потому что до этого я получал тот же текст ошибки на клиенте (но с кодом 720002), и журнал показал, что Apache ищет формат e:/dev/, которого не существует, но e:/dev/.svn/format делает.
Я прочитал это и заметил, что моя Subversion была 1.5.1, а 1.5.5 вышла, и что я недавно обновил TortoiseSVN, я подумал, что, возможно, была некоторая несовместимость (это может не иметь смысла, я не знаю, как это работает точно.) Поэтому я скачал 1.5.5, остановил службу, скопировал библиотеки DLL и EXE-файлы, перезапустил службу, скопировал новые файлы.so в каталог модулей Apache и перезапустил httpd. Неудачно.
Какие-либо предложения? Эта конкретная вещь формата 9 кажется редкой...
1 ответ
Пожалуйста, согласитесь со мной через следующее объяснение, оно оправдывает мою гипотезу по вашей проблеме и даст вам некоторое представление о том, как работает SVN:
В Subversion у вас есть 2 места, содержащие файлы: хранилище и рабочая копия.
Хранилище хранит историю, вы извлекаете ее из рабочей копии и работаете там и сохраняете данные в хранилище.
Svnervice и apache svn позволяют открывать репозиторий. Tortoise позволяет создавать рабочие копии из открытого репозитория.
Из того, что вы опубликовали, я думаю, что вы пытаетесь предоставить рабочую копию вместо репозитория (папка ".svn" типична для рабочей копии, и я уверен, что e: \ dev.svn - это каталог для проверки).
Зайдите в управление службами и найдите командную строку, которая запускает службу svn. Она должна содержать строку, подобную следующей: svnserve -d -r {somepath}
{Somepath} - это путь к вашему хранилищу. Этот путь вы должны указать в директиве конфигурации SVNPath apache.
И последнее: НЕ разрешайте R/W доступ к одному и тому же репозиторию, используя svnserve и apache svn, это, вероятно, повредит ваш репозиторий, подвергая его гоночным условиям при блокировках транзакций.