2011-01-28 4 views
2

Моя коллега и я используем SVN для нашего проекта. Мы работаем в том же филиале в течение последних нескольких недель, при необходимости фиксируя и объединяя файлы. Три дня назад наш сервер SVN умер, и мы потеряли все наши данные. Я (глупо) не делал регулярных резервных копий на отдельный сервер, поэтому у лучшей резервной копии у меня есть 200 версий, где мы находимся.Восстановление SVN после потери данных

Есть ли способ, чтобы наши выписанные копии были слиты правильно и обратно в SVN?

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

+1

Я не троллинг - вы должны перейти в git. Этот тип проблемы не существует, и вам не нужны регулярные резервные копии, так как каждый человек, работающий над проектом, уже выполнил резервное копирование проекта для вас. – xaxxon

+0

Я так часто слышал, что я уверен, что ты прав. Я просто так не обходился. Этот инцидент может стать последней каплей. –

ответ

2

Первый шаг я бы сделать, это выполнить COMAND svn diff на компьютере, держащего старую ревизию рабочей копии. Он создает файл diff, содержащий изменения текущей версии, касающиеся последней выписки.

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

Теперь возьмите файл diff, созданный ранее, и примените его к только что зарегистрированной рабочей копии. Надеюсь, вы получите только небольшие конфликты, которые могут быть легко решены вами или вашим коллегой. Если все проблемы решены, проверьте его.

Примечание: Эта инструкция нацелена на создание полностью нового хранилища. Устаревшая резервная копия не рассматривалась.

+0

Я не уверен, что понимаю шаг 1. Прямо сейчас, я установил локальный сервер SVN на моей машине (svn.local), у которого есть репозиторий при ревизии 500. У меня также есть рабочая копия, которую я проверил из теперь - мертвый сервер (svn.oldserver.com), который находится в редакции 700. Когда вы пытаетесь выполнить diff от repo (rev 500) к рабочей копии (rev 700), он сообщает мне, что он не может подключиться к svn.oldserver .com. –

+0

AFAIK svn diff показывает только различия в вашем рабочем пространстве - ему не нужно обращаться к репозиторию на сервере. Поэтому он все равно должен работать. – Robert

+0

Прости, я все еще потерян. Скажем, у меня есть два каталога: «olddir» и «newdir». «olddir» содержит извлеченную копию старого (pre-data-loss) репозитория. «newdir» содержит рабочую копию, которую я хотел бы объединить, но не имеет доступа к ее svn-репо (потому что сервер больше не существует). Можете ли вы дать мне команду svn, которую мне нужно запустить, чтобы получить правильный diff? Благодарю. –

1

Это должно помочь:

svnadmin recover <svn path> 

ИЛИ

svnadmin verify <svn path> 
Смежные вопросы