2009-09-17 1 views
2

Я не использовал hotcopy для резервного копирования моего репозитория Subversion. Мы используем Visual SVN Server (последний) с черепахой. Я скопировал C: \ Repositories и поддержал это несколько дней назад, и теперь я хочу его восстановить.Восстановление репозитория Subversion И возврат его к обновлению с локальными изменениями каждого пользователя

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

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

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

ответ

6

Как об этом подходе, каждый разработчик:

  1. делает TortoiseSVN -> Экспорт их в настоящее время недействительной рабочую копию во временную папку
  2. получает новое извлечение из восстановленного хранилища
  3. Копирует экспортированная рабочая копия (т.е. нет.SVN каталоги), над верхней частью новой рабочей копии
  4. Update и совершать в соответствии с обычным

Обратите внимание, что вы можете получить более сливаться конфликтов, чем обычно, но они могут быть решены в обычном порядке.

+0

Я не вижу, как это может сработать. Если я возьму моего босса и экспортирую его. скопируйте его и замените, он обязательно заменит его. Я могу проверить это точно. Но тогда мне придется делать то же самое. Я могу получить последние, и я могу экспортировать мои, но тогда я не могу просто скопировать и вставить мои данные по последнему обновлению, потому что как SVN собирается вызывать инструмент слияния, когда я это делаю? Я бы просто скопировал/заменил, если, возможно, даже при том, что я копирую/заменяю, когда я проверяю его обратно. Я получаю конфликты слияния, которые вы откладываете от последней регистрации, которую я сделал с файлами моего босса? – PositiveGuy

+0

Я имею в виду, вы получаете конфликты слияния при регистрации? Я не думаю, что это так, только когда вы проверяете. Поэтому, если я вставлю все мои OVER и зарегистрируюсь, я не собираюсь создавать конфликты? правильно? или я? – PositiveGuy

+0

См. Пункт 4. Обновление, а затем Завершить. Обновление (где могут возникать конфликты слияния) - это то, что другие разработчики также касаются этого кода и совершают перед вами. Могу я предложить вам попробовать его на одном из разработчиков ПК, чтобы понять, что я имею в виду. – si618

2

Любые изменения, внесенные с момента создания резервной копии, отсутствуют в репозитории, и каждый должен будет выполнить новую проверку из восстановленного репозитория. (Номера версий изменились, и у вас будет беспорядок, если вы этого не сделаете.)

Что касается утилизации любых изменений из местных копий разработчика, да, это будет скорее ручным. Однако «diff» и «patch» являются вашими друзьями. Если вы не знакомы с cygwin, вам нужно получить это и получить пакеты diff, patch, diffutils и patchutils, чтобы у вас была команда «diff» и команда «patch». Вы можете использовать команду «diff» для создания файла, содержащего дельта между одной копией исходного дерева и другим. Вы хотите использовать его следующим образом:

diff -urN --exclude=.svn fresh_check_from_new_repo old_working_copy > developer1changes.patch 

Сделайте это для рабочей копии каждого разработчика. Вы можете взять эти файлы и применить изменения к свежей проверке с помощью команды «заплаты», как это:

cd working_copy 
patch -p1 -i ...../developer1changes.patch 

Теперь вы будете иметь рабочую копию с их изменениями. (Хотя без их svn добавляет, svn rms и изменения свойств.) Оттуда определите, что нужно сделать.

Вы можете использовать команду «filterdiff», чтобы взять файл исправления и отфильтровать части изменений, исправить патч и применить только эти изменения.

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

Это получает всю работу в репозитории, где она не затеряется. Затем вам придется иметь дело с конфликтами при попытке объединить ветви в багажник. В этот момент вы должны будете использовать инструменты gui, чтобы выбрать, какие изменения сохранить или бросить.

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

+0

Если я использую черепаху, куда я могу использовать инструмент командной строки? – PositiveGuy

+0

ничего себе, это много чего выяснить. Это заняло бы у меня много времени. – PositiveGuy

+0

Ну, возможно, вам следует сбалансировать стоимость изменений, сделанных всеми разработчиками за время, прошедшее с момента последнего резервного копирования, против стоимости вашего времени, чтобы изучить эти инструменты. Но эти инструменты очень эффективны и полезны во многих других ситуациях, которые происходят во время разработки, поэтому я бы посоветовал вам научиться им независимо. – retracile

Смежные вопросы