2010-07-08 6 views
7

Мой SVN репозиторий был установлен на сервере, и этот сервер получил вниз, У меня есть три рабочих копий, и все они внесли некоторые изменения и их не совершала на базу Что делать в этом случае, пожалуйста, помогите мнеЯ потерял свой репозиторий SVN

+0

Получите новый сервер и настройте сервер svn. – RageZ

+0

Означает ли это, что вы потеряли репозиторий? – Groo

+3

@Groo: Я очень надеюсь, что они сделали резервные копии хранилища. Если нет, это отличный урок для жизни ;-) – Joey

ответ

9

Означает ли это, что вы потеряли репозиторий?

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

  1. Создать новое хранилище где-нибудь.
  2. Выберите одну из ваших рабочих копий (начните с самой старой, то есть с меньшими изменениями).
  3. Сделайте выкуп вашего нового репозитория в пустую папку на этой машине.
  4. Экспорт рабочей копии (не копировать) в пустую папку вы получили в шаге 3. Так как вы, вероятно, чтобы удалить вас старые рабочие копии позже, было бы целесообразно, чтобы Экспорт неверсированные файлов также (если вы используете Tortoise SVN, есть флажок в верхней части диалогового окна «Экспорт»).
  5. Зафиксируйте изменения.

Повторите шаги с 2. по 5. для всех имеющихся у вас рабочих копий. Во время шага 5 вам нужно будет объединить вещи вручную. При необходимости позаботьтесь о добавлении любых неверсированных файлов.

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

+0

Приятное, чистое исправление, если у вас нет репо. – Steven

3

Сделайте исправления в каждой рабочей копии, используя svn diff > a.patch, затем примените на одном рабочем исправлении от других двух: patch -p0 < a.patch.

В следующий раз, использовать некоторые DVCS, что-то вроде Git или Mercurial :)

1

У вас есть резервная копия репозитория? Если да, загрузите его svnadmin где-нибудь, а затем зафиксируйте изменения в этом новом месте. Используйте svn switch, чтобы указать свои рабочие копии на новый сервер.

Если нет, то вы потеряли историю своего проекта, и нет способа вернуть его.

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

Используйте DVCS как Mercurial или Git, чтобы избежать подобных ситуаций (и много других проблем).

+2

Я не уверен, что защищать DVCS вместо стратегии резервного копирования - это, в частности, разумный совет. –

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

  • Нет связанных вопросов^_^