Вопрос

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

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

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

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

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

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

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

Итак, к моему вопросу (ам):

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

Решение

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

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top