Ответ 1
Я решил это, отключив протокол HttpV2. Чтобы отключить его, вы можете вносить изменения в расположение конфигурации mod_dav_svn
следующим образом:
DAV svn ... SVNAdvertiseV2Protocol Off
Недавно я обновил bitnami trac stack (от 0.12.2-5 до 0.12.3) на нашем сервере и после реконфигурации всех скриптов и репозиториев все выглядело хорошо, Мне удалось войти в систему и просмотреть исходный код и просмотреть репозиторий с помощью Trac. Я тестировал исходный код, и я мог просматривать репозиторий через visualsvn и черепаху.
Но когда дело дошло до совершения внесенных изменений, возникла проблема. Я получил исключение, которое не найдено. Заглянув в журнал ошибок на сервере, все, что я мог видеть, было то, что все запросы GET были прекрасны, но POST имели неправильный URL (!svn/me
был добавлен в конце).
После нескольких часов работы с журналами и конфигурациями, поскольку Subversion была обновлена с 1,6 до 1,7, это включает новый протокол HTTPv2. Этот протокол каким-то образом повлиял на доступ к репозиториям SVN, но, похоже, влияет только на POST, а не GET.
Способ отключения этой новой функции заключается в изменении конфигурации mod_dav_svn следующим образом:
DAV svn
...
SVNAdvertiseV2Protocol Off
Затем проблема была решена, и мы могли снова проверить наши изменения.
Я решил это, отключив протокол HttpV2. Чтобы отключить его, вы можете вносить изменения в расположение конфигурации mod_dav_svn
следующим образом:
DAV svn ... SVNAdvertiseV2Protocol Off
Просто хотел добавить немного к этому "вопросу". Я получил сообщение об ошибке после того, как я переместил сервер SVN с одной машины на другую. Ошибка 500 и "! Svn/me" была добавлена в конец URL-адреса сервера SVN, ничего не зафиксировалось, а все остальное работало. После нескольких часов работы с множеством вещей выясняется, что учетная запись пользователя VisualSVN/Apache не имела доступа к записи в каталог SVN репо. Поэтому я дал учетной записи изменить/написать доступ к каталогу SVN-репозиториев и выполнить работу. Что на самом деле имеет смысл, потому что все, кроме Commit, работает. Не уверен, что это будет полезно для других, но я думал, что буду публиковать его здесь независимо. Спасибо за вопрос, помогли мне понять, где я ошибся.
Это была проблема https://trac-hacks.org, которая обслуживает Trac в /
и Subversion в /svn
. Первоначально проблема была решена путем отключения SVNAdvertiseV2Protocol
. Позже проблема была решена путем обслуживания Trac от /trac
и перенаправления /
на /trac
. Однако это решение не было идеальным из-за перенаправления. Другой администратор проекта нашел решение добавить:
Alias /svn /var/www/000-default/svn
Я не уверен, почему это работает, но оно эффективно и не требует перенаправления и обслуживания Trac из /trac
.
Мой репозиторий имеет около 700 000 файлов и 660 папок. У меня была такая же ошибка, и я был уверен, что SVNAdvertiseV2Protocol Off
- неправильный путь. Добавление
<IfModule dav_svn_module>
SVNInMemoryCacheSize 262144
SVNCacheFullTexts on
SVNCacheTextDeltas on
</IfModule>
to /etc/apache2/mods-enabled/dav_svn.conf
исправил проблему для меня.