Решард существующего большого хранилища SVN - PullRequest
5 голосов
/ 27 октября 2010

у нас довольно большой SVN-репозиторий (50 ГБ, более 100000 ревизий). Работа с ним довольно медленная, и я предполагаю, что причиной этого является плоская структура каталогов в db / revs и db / revprops (где каждая ревизия - один файл).

Мы используем формат FSFS с SVN 1.5 (на сервере Linux), но репозиторий был создан с более старой версией SVN. Теперь я прочитал, что SVN 1.5 поддерживает «сегментирование», и я понял, что эта функция распределяет ревизии по нескольким каталогам, поэтому один каталог не содержит так много файлов. Это звучит довольно полезно, но, к сожалению, похоже, что эта функция используется только с репозиториями, которые были недавно созданы с SVN 1.5.

Как я могу преобразовать большой существующий линейный репо в закрытый репо? В руководстве упоминается инструмент "fsfs-reshard.py", но в этом сценарии написано: "Этот сценарий незакончен и не готов к использованию с живыми данными. Поверьте нам". Так что я определенно не хочу этим пользоваться. Есть ли альтернатива?

Ответы [ 3 ]

7 голосов
/ 27 октября 2010

Сможет ли svnadmin dump и svnadmin load добиться цели?http://subversion.apache.org/faq.html#dumpload

2 голосов
/ 27 октября 2010

Наилучшим способом является упомянутый цикл сброса / загрузки.Но вы можете попробовать upgrade .

svnadmin upgrade

. Сначала сделайте копию своего репозитория, попробуйте обновить и протестируйте его .... (не забудьте сделать резервную копию).

0 голосов
/ 28 ноября 2015

Поскольку процесс дампа / восстановления требует много дискового пространства и времени обработки, я опубликовал (в 2010 году) улучшенную версию fsfs-reshard.py, которая включает поддержку Subversion 1.6 FSFS формата 5: https://github.com/ymartin59/svn-fsfs-reshard

Он поддерживает переключение между линейным и осколочным макетами, распаковывая осколки при необходимости.Благодаря подсчету статистики шарда вы можете ожидать, что упакованные размеры ревизии выберут подходящий размер шарда.

Конечно, он должен использоваться с осторожностью :

  • Процедура первого тестав копии репозитория, если это возможно
  • Получить резервную копию, готовую к восстановлению
  • Запретить доступ к репозиторию при обработке
  • Запустить svnadmin verify до его запуска
...