Какова наилучшая стратегия при переходе с ClearCase на SVN?

Мы рассматриваем возможность перехода с ClearCase на Subversion. Проект был там некоторое время (7 лет), и мы активно поддерживаем три "основные" версии (ветви), а также некоторые случайные исправления в старых версиях. Проект довольно большой - около 2 млн. Строк Java-кода.

Мне любопытно, есть ли кто-то, кто сделал подобную миграцию.

  • Сможет ли SVN справиться с таким крупным проектом?
  • Имеет ли смысл переносить все исторические версии / ветки? Есть ли инструменты, которые могли бы делать это выборочно?
  • Сколько времени займет процесс миграции для такого проекта и каков эффективный способ работы, тогда миграция продолжается?

5 ответов

Решение

Сделав несколько таких миграций, я бы сказал, что:

  • Вам не нужно импортировать всю историю версий ClearCase в SVN. Большую часть времени (по моему опыту) требуются только помеченные версии (те, которые применяются последовательно ко всем файлам данного набора), если только у вас нет реальной необходимости в детальном пересмотре истории.

  • вам нужно подумать о реорганизации во время миграции: что вы импортируете? что оставляете? и хотите ли вы, чтобы содержимое SVN точно отражало структуру файлов, хранящихся в ClearCase VOB? Иногда такие миграции являются поводом переосмыслить некоторые из этих файловых организаций (обычно с помощью простых правил переименования для определенных каталогов).

  • миграция происходит быстрее в ClearCase 2 SVN, так как SVN ориентирован на репозиторий и фиксирует набор файлов, тогда как ClearCase ориентирован на файл и фиксирует файл за файлом (намного медленнее)

  • если набор файлов для импорта четко идентифицирован, процесс миграции может повторяться многократно, что означает, что вы можете продолжать работать в ClearCase, пока выполняется первый (большой) импорт, а затем поставить базовую линию (метку UCM) на Ваш код и повторно импортируйте только дельту, эффективно завершая процесс миграции.

Сначала некоторые ресурсы:

  1. Инструмент Clearvision CC2SVN
  2. SVN Импортер от Polarion
  3. Статья и ресурсы на CollabNet

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

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

Я лично попытался бы собрать как можно больше данных, но вы должны знать об ограничениях SVN по сравнению с ClearCase. Любая история версий каталогов (рефакторинг), скорее всего, будет потеряна во время этой миграции. SVN не поддерживает разреженные ветви, такие как ClearCase, что может привести к увеличению размера вашего SVN-хранилища, если вы используете ветви задач. В этом случае вы, вероятно, захотите ограничиться только системными ветками. Файлы в ClearCase имеют индивидуальную структуру ветвления, в то время как SVN имеет разновидности веток для каждого продукта, что приводит к значительному переводу ветвей в процессе. Ограничив себя системными ветками и, возможно, просто помеченной версией в этих ветвях для полностью интегрированных меток в серии, вы можете сэкономить много хлопот. Если ваша команда использует UCM, вы можете забыть все метаданные UCM. Они не будут переводить в SVN.

Сроки во многом зависят от используемых инструментов. Для такого крупного проекта, как у вас, это может быть даже недели. У базы данных ClearCase по какой-то странной причине много блокировок даже на операциях чтения, и есть одна центральная таблица всего, что создает много проблем в крупномасштабном доступе, которые может вызвать миграция. Когда я впервые запустил свой инструмент для продукта, несколько большего, чем у вас, мы рассчитали, что он будет работать в течение 3 лет, после значительной оптимизации, распараллеливания и постепенной миграции он сократился примерно до недели. Но ожидайте, что в зависимости от того, насколько хорошо инструмент сделан, может быть много различий во времени, которое требуется. Хотя, поскольку вы мигрируете в SVN и игнорируете большую часть истории и метаданных из ClearCase, ваша миграция должна быть намного быстрее.

ClearVision на своих страницах упоминает, что его инструмент CC2SVN может создать мост между этими двумя продуктами. Хотя я не использовал этот инструмент, если он работает так, как я предполагаю, он позволит вам синхронизировать 2 репозитория после некоторой обработки, что позволит вам переключиться на выходные с нулевым временем простоя разработки. Если это невозможно, попробуйте запросить какую-нибудь альтернативу, например, инкрементную миграцию, когда вы сначала переносите до некоторой даты, а затем переносите меньший кусок данных, измененных с этой даты.

Очень важной частью этого процесса является этап после миграции. Пожалуйста, не сбрасывайте со счетов головные боли, которые коммутатор принесет вашим разработчикам. Вы не должны недооценивать необходимость обучения и четкой документации. Вам также понадобится обученная группа поддержки в вашем отделе разработки программного обеспечения, способная управлять обеими системами SCM и объяснять разработчикам, как делать то, к чему они привыкли в новой системе. Это на самом деле точка, которая может сломать вам шею при миграции. Разработчики противостоят любым изменениям и любым преимуществам, которые SVN приносит проекту, по сути, это значительно уступает системе. ClearCase предоставляет вашим разработчикам такую ​​гибкость, которой у них никогда не будет с SVN, и, если вы не включите их на раннем этапе процесса, вы можете потерять их или, что еще хуже, полностью перевернуть всю миграцию, объявить катастрофу и потерять свою работу.

Если вы решите переместиться, вы можете посмотреть на этот вопрос.
рекомендация-на-инструментов к миграции, из-ClearCase-к-СВН

Другой вариант - Migrate2SVN. Разработчик (Clearvision) только что выпустил v2.0 и, похоже, включает в себя МНОГИЕ улучшения по сравнению с программным обеспечением Polarion и другими методами, упомянутыми выше.

  1. Да, Subversion может работать с очень большими проектами. Например, все проекты Apache находятся в одном репозитории Subversion, а подпроекты - это простые подпапки.
  2. Если имеет смысл конвертировать всю историю, то это вы должны решить сами. Но есть много доступных инструментов. Хороший пост в блоге можно найти здесь.
  3. Я не знаю, сколько времени займет такое преобразование. Но вы можете попробовать сначала с небольшим подмножеством и измерить время.
Другие вопросы по тегам