Восстановление репозитория Subversion И его возврат в актуальном состоянии с учетом всех локальных изменений
-
10-07-2019 - |
Вопрос
Я не использовал горячую копию для резервного копирования своего репозитория Subversion.Мы используем Visual SVN Server (последний) с черепахой.Я скопировал C: epositories и сделал резервную копию несколько дней назад, и теперь хочу восстановить его.
Теперь я могу использовать репозиторий, скопировав резервную копию папки репозитория.
и затем, я думаю, теперь мне придется вручную просмотреть локальный проект каждого члена команды, чтобы увидеть, у кого есть последняя версия?Если так, то это займет у меня несколько часов.
кто-нибудь знает, это правильный путь или единственный путь?Это действительно эта инструкция?Я думаю, это потому, что у всех локальные изменения разные.
Решение
Как насчет этого подхода, каждый разработчик:
<Ол>Обратите внимание, что вы можете получить больше конфликтов слияния, чем обычно, но они могут быть разрешены обычным способом.
Другие советы
Любые изменения, внесенные после резервного копирования, отсутствуют в репозитории, и всем придется заново извлекать данные из восстановленного репозитория.(Номера ревизий изменились, и если вы этого не сделаете, у вас будут проблемы.)
Что касается сохранения любых изменений из локальных копий разработчика, да, это будет довольно вручную.Однако «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», чтобы взять файл исправления и отфильтровать части изменений, передать его по каналу для исправления, и он применит только эти изменения.
редактировать:Другой вариант:для каждого разработчика создайте ветку и извлеките эту ветку, затем скопируйте их локальную копию поверх файлов в этой новой рабочей копии и зафиксируйте.
В результате вся работа окажется в репозитории, где она не потеряется.Затем вам придется иметь дело с конфликтами при попытке объединить ветки в ствол.На этом этапе вы сможете использовать инструменты графического интерфейса, чтобы выбрать, какие изменения сохранить, а какие отбросить.
Но краткий ответ:у вас много работы, так как у вас нет самой последней резервной копии репо...поэтому, как только вы снова сможете работать, настройте гораздо более частое расписание резервного копирования.