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

воссоздание репозитория svn

после серьезной ошибки сервера репозиторий 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'

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

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

В основном процесс заключается в замене старого UUID на новый UUID в файлах с именем "entry" в скрытых папках svn (папках с именем .svn или _svn) вашей рабочей копии. Как только это будет сделано, вы можете использовать TortoiseSVN «relocate», чтобы указать рабочий каталог на новый 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", но я не знаю эту команду в голове.

После инициализации нового репозитория svn

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

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

Вы можете установить 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 либо.

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

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