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

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

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

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

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

решение1

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

P.S.: Явыполненныйтакие ленивые миграции "копирования-пропускания" без большой головной боли

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

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

Связанный контент