Subversion Объединить несколько рабочих копий? - PullRequest
3 голосов
/ 20 января 2009

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

Если один человек может иметь доступ ко всем рабочим копиям (файловой копии или удаленного общего ресурса), возможно ли объединить изменения в наших рабочих копиях с одной рабочей копией? Окончательная рабочая копия затем может быть импортирована в новый репозиторий.

Короче, можете ли вы объединить две разные рабочие копии без сервера?

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

Продолжение : это то, что мы сделали:

  1. Начиная с самой последней рабочая копия всех разработчиков.
  2. Импортировал это в новый репо.
  3. Работа от самой новой редакции рабочей копии до самой старой, копируется ТОЛЬКО в файлы с внесенными изменениями.
  4. стирка-полоскание-повтор 6 раз. (У 2 разработчиков не было внесенных изменений).
  5. экспортировал все старые рабочие копии, заархивировал их и сохранил для безопасного хранения при необходимости.
  6. Обновлены наши ревизии в базе данных управления выпусками до очень молодого репо.

Ответы [ 7 ]

4 голосов
/ 20 января 2009

Поскольку вы потеряли свой репозиторий (извините за это), вы также потеряли всю историю.

Все, что вы можете сделать сейчас, это начать с нуля.

  1. создать новый репозиторий
  2. создать структуру папок
  3. экспорт рабочей копии первого пользователя в новую папку
  4. импортировать экспортированную папку в хранилище
  5. все остальные пользователи теперь проверяют новую рабочую копию
  6. все остальные пользователи теперь «экспортируют» свою оригинальную рабочую копию поверх новой рабочей копии

Под экспортом я имею в виду создание копии рабочей копии, но без скрытых папок .svn.

1 голос
/ 20 января 2009

Привет, это каверзная проблема. Но это то, что я бы сделал.

  1. Создать новый репозиторий.
  2. Создание 8 веток и 1 ствола
  3. Импорт работы разработчиков по веткам.
    • Разработчик 1 на ветке 1
    • Разработчик 2 на ветке 2
    • и т. Д.
  4. Затем начните слияние из ветви 1 в ствол. И когда у вас стабильное состояние в багажнике, вы продолжаете с веткой 2 и т. д.

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

/ Johan

0 голосов
/ 16 февраля 2010

Создайте новый репозиторий в том же месте, что и старый, из самой оригинальной рабочей копии (таким образом вы уловите больше истории в новом репозитории).

Если и где это не работает, поместите .svn-каталоги из проверки нового репозитория. (Например, оформить заказ и удалить все, кроме .svn-каталогов)

0 голосов
/ 20 января 2009

Subversion сохраняет исходную версию файла в локальной рабочей копии. Создайте новый репозиторий, сделайте копию самой старой рабочей копии, отмените изменения в КОПИИ рабочей копии, затем импортируйте эту рабочую копию в ваш новый репозиторий.

svn import: http://svnbook.red -bean.com / ru / 1.0 / re12.html

После импорта вы можете использовать svn switch --relocate, чтобы переназначить другие рабочие копии в ваш новый репозиторий и зафиксировать изменения.

svn switch --relocate: http://svnbook.red -bean.com / ru / 1.1 / ch04s05.html

0 голосов
/ 20 января 2009

Я бы попытался просто выбрать одну рабочую копию, чтобы выполнить импорт для нового репо, а затем повторно назначить оставшиеся 7 рабочих копий в этом новом репо, используя переключатель svn, возможно, с relocate, чтобы они поверили, что это тот же репо но переехал. Просто попробуйте выбрать рабочую копию для первоначального импорта, которая не имеет (или как можно меньше) структурных изменений из потерянного хранилища: например, просто файл правок.

Конечно, сделайте тонны резервных копий ваших рабочих копий на случай, если вышеперечисленное не сработает:)

0 голосов
/ 20 января 2009

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

Затем вы можете создать свой основной репо из этого тестового.

0 голосов
/ 20 января 2009

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

PS: плохо, что у вас нет резервных копий ...

PPS: проблема такого рода DVCS решается естественным путем, имея для большинства из них полную копию репо в песочнице каждого разработчика.

...