Как обновить v2 до v3 файловой системы подрывной системы FSFS

9

Во-первых, я пытаюсь реинтегрировать ветку со стволом (используя TortoiseSVN), но получаю сообщение об ошибке «Для запроса информации о слиянии требуется версия 3 схемы файловой системы FSFS; файловая система E: / MyRepository / использует только версию 2».

Действительно ли было невозможно реинтегрировать ветки в более ранние версии Subversion? Или есть другой способ сделать это?

В любом случае, как я могу обновить файловую систему с версии 2 до версии 3?

CBP
источник

Ответы:

6

Вы не указали версию Subversion, на которой работает ваш сервер. Но, основываясь на сообщении, которое вы указали в вопросе, вероятно, это версия 1.4.x или старше. Я не помню, была ли предоставлена ​​команда обновления или нет для преобразования из 1.4.x в 1.5.x, но верный файловый способ получить ваш репозиторий от версии 2 к версии - это выполнить дамп и загрузку. Но это не имеет большого значения, вы все равно захотите установить 1.6.x, чтобы использовать последнюю версию. Итак, вот шаги, которые вам нужно сделать:

  • Обновите Subversion до 1.6.x, если еще не сделали
  • Создайте дамп существующего репозитория с помощью дампа svnadmin
  • Создайте новый репо, назовите его _new
  • Загрузите ваш новый репо с дампом старого, используя svnadmin load
  • Скопируйте файл uuid из старого репозитория в новый репозиторий.
  • переименуйте старый репозиторий в _old
  • переименуйте новый репозиторий в

См. Также Subversion FAQ http://subversion.apache.org/faq.html#dumpload для конкретного примера.

Об этом нужно позаботиться, и файл uuid не даст вашим клиентам сойти с ума. Сделайте обновление SVN, чтобы быть уверенным, хотя.

jgifford25
источник
2
из svnadmin help loadсообщения: --force-uuid : set repos UUID to that found in stream, if any. Короче говоря: не нужно играть с файлами
Hubert Kario
@Hubert Kario: Да, в командной строке есть такая опция. Но не все клиенты GUI делают. И, если вы можете сделать это на стороне сервера, это просто облегчит пользователям. Но я буду помнить об этом переключении в следующий раз, когда столкнусь с этой проблемой. Спасибо за совет!
jgifford25
При создании нового репозитория будьте осторожны с настройкой разрешений. Например, если вы обращаетесь к хранилищу с помощью Apache mod_svn, Apache работает под пользователем «WWW», группа «WWW» , и вы вошли в системе как «Фред», вам, вероятно , нужно что - то вроде: sudo chown -R fred:www myrepositoryсопровождаемое sudo chmod g+wк myrepository/db/repcache.dbиmyrepository/db/uuid
xgretsch
8

Дамп / загрузка не требуется для обновления хранилищ Subversion. Используйте команду обновления svnadmin:

svnadmin upgrade <path-to-repos>

ПРИМЕЧАНИЕ. Обновление svnadmin «выполняет только минимальный объем работы, необходимый для достижения этой цели, при этом сохраняя целостность хранилища. Хотя дамп и последующая загрузка гарантируют наиболее оптимизированное состояние хранилища, обновление svnadmin этого не делает». - см. также документацию по обновлению svnadmin

Иван Жаков
источник
1
Обратите внимание, однако, что это «выполняет только минимальный объем работы, необходимый для достижения этой цели, при этом сохраняя целостность хранилища. Хотя дамп и последующая загрузка гарантируют наиболее оптимизированное состояние хранилища, обновление svnadmin этого не делает». - см. также svnbook.red-bean.com/en/1.7/svn.ref.svnadmin.c.upgrade.html
Йорг
1
Также обратите внимание, что «вы всегда должны создавать резервные копии своего репозитория перед» с помощью обновления svnadmin, тогда как при дампе / загрузке вы как бы имеете неявное резервное копирование.
Йорг
5

У Ивана есть хороший совет, который работает, я попробовал это, и это очень просто.

svnadmin upgrade <path-to-repos>

Одна вещь, которую я пропустил в примере Ivans, которая может быть полезна другим:

Ex.

<path-to-repos> = C:\repos\theRepo
(ie. NOT C:\repos\theRepo\db)

Не указывайте svnadmin на каталог db, а на каталог, содержащий каталог db.

За г
источник