Проблема Subversion после cvs2svn

Я использую eclipse / subclipse для разработки. У меня также есть клиент TortoiseSVN.

Я пытаюсь переместить хранилище CVS. У старого хранилища CVS был один проект. Мы хотим реорганизоваться, так как несколько проектов имеют свои собственные потоки разработки и должны управляться отдельно.

Я запустил стандартное полное перемещение репозитория с помощью cvs2svn, и у меня не было проблем.

Я хочу реструктурировать проекты в хранилище Subversion, поэтому после cvs2svn я попытался сделать ход SVN и сделал реструктуризацию. Я был в состоянии успешно сделать движение, снова без проблем.

Я проверяю проект в eclipse, а затем выбираю файл в одном из перемещенных проектов. Казалось бы, не имеет значения, какой проект. Если я выполню Обновление версии в Eclipse и выберу версию в истории файла для обновления, файл будет удален из моей файловой системы, но более старая версия никогда не выйдет из строя. Файл просто исчез.

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

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

Итак, на мой вопрос (ы):

  1. Я сделал что-то не так во время перемещения cvs2svn, что помешало бы мне успешно реорганизовать мой репозиторий Subversion?
  2. Есть ли лучший способ сделать то, что я пытаюсь сделать?

3 ответа

Решение

Там, где я работаю, мы решили переместить файлы в SVN после импорта из CVS. CVS имеет ограниченные возможности по перемещению истории, в то время как хранилище SVN можно "откатить", чтобы посмотреть, как оно выглядит в любое время. Опять же, благодаря этому было принято решение, что сохранение истории всех изменений и ходов было более важным.

Что мы сделали, так это переместили модуль из CVS в SVN как есть. Затем, используя обозреватель хранилища, перед извлечением переместите все файлы по мере необходимости.

Теперь это не решает вашу проблему, когда вы обновляете отдельный файл до более старой версии, чтобы он мог исчезнуть. Мы решили жить с этим, потому что мы пытаемся перейти от файлово-ориентированного представления хранилища (CVS) к основанному на снимке. Поэтому, если нам нужно вернуться к более старой версии, мы обновляем весь проект. Если вы просто просматриваете историю различий, это хорошо работает с TortoiseSVN, когда мы разрешаем перемещение / переименование.

Я согласен с Питером Паркером в том, что перед преобразованием в Subversion проще и предпочтительнее реорганизовать проекты в CVS, если вы хотите реорганизовать папки и файлы в отдельных проектах.

Но если вы хотите реорганизовать макет самих проектов (т. Е. Где один проект живет относительно другого), вы можете легко сделать это как часть преобразования cvs2svn. Когда вы выполняете многопроектное преобразование, вы можете указать, где cvs2svn должен размещать каталоги стволов, веток и тегов для каждого из проектов. Просто разместите их в соответствии с желаемой новой организацией проекта, и тогда у вас не должно возникнуть проблем при работе с репозиторием с использованием любого из обычных инструментов.

  1. Нет, ты не сделал ничего плохого
  2. Да. Вы должны реорганизовать свой CVS-репозиторий, прежде чем импортировать его через cvs2svn

Причина этого симптома:

Вы всегда должны проверить папку. Если вы обновитесь до предыдущей версии, эта папка может не существовать (папка была перемещена), тогда Subversion удалит ее содержимое. Переименование в Subversion всегда осуществляется как удаление и добавление. Таким образом, у вас есть тонкая связь между файлами, но это просто для истории этого файла. Если вы хотите увидеть новый макет, вам нужно оформить заказ в папке, которая содержит и целевую, и исходную папку. Чем вы сможете "увидеть" перемещение этой папки, однако, если у вас есть только одна из папок в вашем извлечении, папка просто исчезнет, ​​и вам нужно извлечь другой URL(либо целевой, либо исходный).

Так что проще реструктурировать ваши проекты в CVS, а затем мигрировать. Недостаток: у вас не будет истории вашей реструктуризации, и вы не сможете собрать / скомпилировать предыдущие версии (которые были созданы в CVS).

Другие вопросы по тегам