Странная ошибка Apache2.2 SVN, «Ожидаемый формат хранилища« 3 »или« 5 »; найденный формат« 9 »» - PullRequest
2 голосов
/ 17 февраля 2009

У меня был репозиторий, к которому я мог бы получить доступ, используя 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, остановил службу, скопировал overlod библиотеки DLL и EXE, перезапустил службу, скопировал новые файлы .so в каталог модулей Apache и перезапустил httpd. Не повезло.

Есть предложения? Эта конкретная вещь формата 9 кажется редкой ...

1 Ответ

6 голосов
/ 17 февраля 2009

Пожалуйста, согласитесь со мной через следующее объяснение, оно оправдывает мою гипотезу о вашей проблеме и даст вам некоторое представление о том, как работает SVN:

В Subversion у вас есть 2 места с файлами: хранилище и рабочая копия.

Хранилище хранит историю, вы извлекаете ее из рабочей копии и работаете с ней и возвращаетесь в хранилище.

Svnervice и apache svn позволяют открывать хранилище Черепаха позволяет создавать рабочие копии из открытого хранилища.

Из того, что вы опубликовали, я думаю, что вы пытаетесь предоставить рабочую копию вместо репозитория (папка ".svn" типична для рабочей копии, и я уверен, что e: \ dev.svn - это каталог для проверки).

зайдите в управление службами и найдите командную строку, которая запускает службу svn. Она должна содержать строку, подобную следующей: svnserve -d -r {somepath}

{somepath} - это путь к вашему хранилищу. Это путь, который вы должны указать в директиве конфигурации SVNPath apache.

И последнее: не разрешайте НЕ разрешать R / W доступ к одному и тому же репозиторию, используя svnserve и apache svn, это, вероятно, повредит ваш репозиторий, выставив его в состояние гонки на блокировках транзакций

...