Переместите репозиторий SVN, когда сервер мертв

Мой сервер SVN мертв.

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

Есть ли чистый способ воссоздать репозиторий на новом сервере только из текущей рабочей копии? (историю можно забыть)

Я попытался создать новый репозиторий, взломав его UUID и проверив всю структуру каталогов, а затем переключил -relocate для рабочих копий, но это не работает из-за несоответствия контрольных сумм и номеров ревизий.

Любая помощь могла бы быть полезна!


person Rick    schedule 21.12.2010    source источник
comment
Диск уничтожен, или вы можете установить его на другой компьютер и скопировать каталог репозитория?   -  person Anon    schedule 21.12.2010
comment
Если вас не волнует история, зачем заботиться о сохранении вашей рабочей копии? Просто импортируйте то, что у вас есть, в совершенно новое репо, а затем проверьте новую рабочую копию. ???   -  person Nathan Kidd    schedule 21.12.2010
comment
Анон- Диск все еще там, но у меня нет под рукой другого настольного компьютера. Возможно, мне придется откопать адаптер IDE / USB ... Натан: Думаю, я смогу это сделать; Я надеялся, что в какой-то момент мне удастся возродить хранящую историю машину, так что я смогу вернуть то, что есть история ...   -  person Rick    schedule 22.12.2010


Ответы (3)


У вас вообще нет бэкапов?

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

Вы захотите убедиться, что "главный" рабочий каталог чист: сделайте svn revert на нем, затем удалите все .svn каталоги - обратите внимание, что есть один на каждом уровне дерева (обязательно сделайте копию, прежде чем делать это) .

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

person Anon    schedule 21.12.2010
comment
Спасибо за полный ответ! У меня есть резервная копия, сделанная несколько месяцев назад, но когда я использую ее для создания нового репозитория, она жалуется на несоответствие контрольных сумм ... Думаю, единственный способ - начать заново! Я мог бы переименовать все мои .svns в .svn-backup, чтобы я мог вернуться в свой старый репозиторий, если я когда-нибудь оживлю машину. Еще раз спасибо! - person Rick; 22.12.2010
comment
@Rick - команда svnadmin setuuid может помочь вам решить проблему с контрольной суммой. Однако я думаю, вам лучше создать репо из резервной копии, проверить его в новом рабочем каталоге, а затем скопировать последние файлы, используя процесс, описанный выше. - person Anon; 22.12.2010
comment
Хорошо, я сделал это (с переименованным, а не удаленным .svns) - к сожалению, я полностью забыл, что есть файлы и каталоги, которые я не проверяю (каталоги сборки и т. Д.), Поэтому теперь у меня будет немного их оголяет головная боль. Ба ... Еще раз спасибо. - person Rick; 22.12.2010

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

Обязательно проделайте все это с копией своей рабочей копии, поскольку это, кажется, последнее, за что вам нужно цепляться.

person sbi    schedule 21.12.2010
comment
Есть ли способ сохранить историю и при этом импортировать репозиторий во вновь созданное репо. - person Krunal; 03.07.2014

svn export - правильный способ удалить папки .svn.

person Ha.    schedule 21.12.2010
comment
Но работает ли это даже, когда у вас нет доступа к серверу SVN? (И как это отвечает на вопрос?) - person sbi; 21.12.2010
comment
-1: Его сервер с репо мертв! svn export здесь не поможет, если жесткий диск не подлежит восстановлению. - person jgifford25; 21.12.2010
comment
@ jgifford25: обратите внимание, что вы можете экспортировать в рабочую копию, что позволяет удалить все .svn папки. Однако, как я уже писал, я сомневаюсь, что это работает без доступа к репо. ICBWT. - person sbi; 21.12.2010
comment
Это определенно позволяет вам экспортировать из рабочей копии (просто запустите svn help export, см. Вариант № 2) без сервера. Из каталога рабочей копии svn export. / путь / к / экспорту / к. Это избавит OP от необходимости писать скрипт для удаления самого .svn dirs, плюс он пропустит любые файлы, не находящиеся под контролем версий, и все это без изменения его рабочей копии. - person Joshua McKinnon; 22.12.2010