воссоздание SVN хранилища

8

после серьезного сбоя сервера, хранилище svn было уничтожено, и моя рабочая версия является самой последней,

Как восстановить SVN-репозиторий из моей рабочей версии?

после установки svn на новый сервер и попытки на моей рабочей копии

 svn switch NEW_SVN_PATH .

я получаю ошибку

 Repository UUID '1c604742-6b16-462b-86e4-cc8bce959242' doesn't match expected UUID '6df69aeb-a72c-450d-8102-24036a3855f7'
Павел К.
источник

Ответы:

2

После инициализации нового svn reporsitry

  1. на клиенте выполните svn-экспорт текущего рабочего каталога в другое место
  2. из экспортированного местоположения выполните импорт SVN в новый URL SVN
  3. теперь выполните перемещение SVN в новый созданный репозиторий.

хотя это может сработать, я думаю, что вместо переселения, новая проверка может быть хорошей

Динеш Манн
источник
2

Пришлось с этим бороться. Я использую размещенную Subversion, и сделал дамп, а затем импортировать. Их процесс импорта не перенес UUID из старого репозитория в новый, поэтому я получил ту же ошибку, что и OP. Все ответы на сайтах Stack Exchange говорят только о том, как с этим справиться, используя "svnadmin setuuid", но это не вариант для меня, так как я использую размещенный сервис (и, следовательно, svnadmin не будет иметь доступа к хранилищу ). Я мог бы ввести тикет, но не хотел иметь дело с ожиданием, поэтому вот как я это исправил, вручную обновив UUID моей рабочей копии :

Предупреждение: попробуйте это, только если вы уверены, что рабочая копия и репозиторий, на который вы указываете, абсолютно синхронизированы. Не уверен, что произойдет, если они не будут.

В основном процесс заключается в замене старого UUID новым UUID в файлах с именем «записи» в скрытых папках SVN (папки с именами .svn или _svn) вашей рабочей копии. Как только это будет сделано, вы можете использовать «перемещение» TortoiseSVN, чтобы указать рабочему каталогу новый URL-адрес хранилища.

  1. В окне консоли перейдите в корень вашей рабочей папки.
  2. Запустите команду, чтобы рекурсивно удалить атрибут «только для чтения» из файлов «записей»: attrib -R entries /S
  3. Используйте функцию «заменить в файлах» текстового редактора, чтобы заменить старый UUID новым UUID. Я использовал Visual Studio со следующими настройками: Просмотреть: PATH_TO_WORKING_FOLDER_ROOT / Включить подпапки: проверено / Посмотреть следующие типы файлов: записи
  4. Отменить шаг № 2: attrib +R entries /S
  5. «Переместить» рабочую копию на новый URL. Я использовал TortoiseSVN: щелкните правой кнопкой мыши рабочую папку, TortoiseSVN-> Переместить.

Я думаю, все, что нужно сделать в шаге 5, это заменить URL-адреса в файлах «записей», так что вы можете сделать это вручную, если хотите. Также возможно с помощью инструмента командной строки "svn", но я не знаю, какая команда у меня в голове.

Жискар Бьямби
источник
Это интенсивно. Это действительно необходимо? Я просто пытаюсь понять это, так как мой провайдер, очевидно, перенес наши репозитории, и я получаю ту же ошибку.
до
0

Вы можете установить UUID в пустом хранилище. Затем импортируйте файлы, которые у вас есть. Вы потеряете свою историю (она не сохраняется в рабочей копии). Но, устанавливая UUID в соответствии со своим старым хранилищем, вы избегаете сообщения об ошибке на коммутаторе svn.

$ svnlook uuid /var/svn/repos
cf1b8d31-acb6-02dc-bc7c-16e92ce6dbec
$ svnadmin setuuid /var/svn/repos   # generate a new UUID
$ svnlook uuid /var/svn/repos
4c2c49fe-acc1-23dc-acbc-2b28ff0c9e6c
$ svnadmin setuuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242  # restore the old UUID
$ svnlook uuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242
Родни Шулер
источник
моя серверная версия svnadmin не имела подкоманды setuuid, думаю, это одна из новых команд. затем я нашел файл db / uuid в репозитории, но после изменения числа в нем svn все еще жаловался, что это не тот же репозиторий
Павел К.
0

У меня была та же проблема, но так как мы использовали опцию хостинга, я тоже не смог svnadmin.

Это было внешнее, я использовал в другом проекте, и я сделал это, чтобы исправить это:

  1. Сделайте резервную копию всех моих локальных изменений.
  2. rm -rf каталог (внешний зарегистрирован)
  3. удалить svn:external(и зафиксировать это)
  4. svn up
  5. добавить svn:externalснова
Пока
источник