Проблема Subversion после cvs2svn - PullRequest
0 голосов
/ 12 мая 2009

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

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

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

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

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 13 мая 2009

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

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

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

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

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

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

0 голосов
/ 13 мая 2009

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

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

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

...