Назад | Перейти на главную страницу

Как правильно перенести репозитории SVN с сервера VisualSVN (Windows) на Apache SVN (Linux)?

Моя цель - перенести старые репозитории SVN с сервера Windows VisualSVN на сервер Linux Apache SVN. Первым шагом было сделать дамп всех репозиториев с помощью команды svnadmin dump. После этого я загрузил эти дампы на свой Linux-сервер. При импорте репозиториев ошибок не было. Однако для некоторых файлов я получаю внутреннюю ошибку сервера 500 при фиксации изменений в них.

Чтобы проверить, что не так, я открыл в своем браузере некоторые файлы, из-за которых возникла ошибка. Я обнаружил, что несколько последних строк из этих файлов повреждены. Данные не теряются, но в конце файла есть странные символы. Они отображаются следующим образом: «???» в моем браузере.

Я пытался выполнить несколько экспортов, но все они вызовут одну и ту же проблему. Можно ли поправить репозиторий или дамп? Ты хоть представляешь, как я могу предотвратить это?

  • AFAICR, несколько версий назад произошли некоторые изменения в структуре репозитория | данных | хранилища: он будет более пуленепробиваемым, если версия Subversion под капотом для VisualSVN Server и сторона apache будут одинаковыми (т.е. обновить VisualSVN Server, если он необходимо)
  • С точки зрения FS репозиторий в VisualSVN Server и Linux Apache одинаковы - только каталоги с файлами и некоторые файлы, не являющиеся репозиториями. Таким образом, в самом простом случае вы можете просто скопировать дерево из RepoRoot на новый сервер (исправить владельца и разрешения в соответствии с требованиями новой ОС), добавить (старый) файл passwd (при необходимости), поместить вне репо-дерева и (старый) authz -file (при необходимости) перенести часть, связанную с svn, из httpd.conf сервера VisualSVN в новую среду (с применением всех необходимых изменений, в основном связанных с путями) и иметь репозитории в новом месте

PS: Я выполнено такие ленивые "copy-pase" миграции без большой головной боли

500 внутренняя ошибка сервера при фиксации

может иметь две основные причины: не перенесенная база пользователей и | или забытые ACL в (возможно, отсутствующем или пустом) файле authz - дампы репозиториев не переносят эти файлы