Какова наилучшая стратегия при переходе с ClearCase на SVN?
Мы рассматриваем возможность перехода с ClearCase на Subversion. Проект был там некоторое время (7 лет), и мы активно поддерживаем три "основные" версии (ветви), а также некоторые случайные исправления в старых версиях. Проект довольно большой - около 2 млн. Строк Java-кода.
Мне любопытно, есть ли кто-то, кто сделал подобную миграцию.
- Сможет ли SVN справиться с таким крупным проектом?
- Имеет ли смысл переносить все исторические версии / ветки? Есть ли инструменты, которые могли бы делать это выборочно?
- Сколько времени займет процесс миграции для такого проекта и каков эффективный способ работы, тогда миграция продолжается?
5 ответов
Сделав несколько таких миграций, я бы сказал, что:
Вам не нужно импортировать всю историю версий ClearCase в SVN. Большую часть времени (по моему опыту) требуются только помеченные версии (те, которые применяются последовательно ко всем файлам данного набора), если только у вас нет реальной необходимости в детальном пересмотре истории.
вам нужно подумать о реорганизации во время миграции: что вы импортируете? что оставляете? и хотите ли вы, чтобы содержимое SVN точно отражало структуру файлов, хранящихся в ClearCase VOB? Иногда такие миграции являются поводом переосмыслить некоторые из этих файловых организаций (обычно с помощью простых правил переименования для определенных каталогов).
миграция происходит быстрее в ClearCase 2 SVN, так как SVN ориентирован на репозиторий и фиксирует набор файлов, тогда как ClearCase ориентирован на файл и фиксирует файл за файлом (намного медленнее)
если набор файлов для импорта четко идентифицирован, процесс миграции может повторяться многократно, что означает, что вы можете продолжать работать в ClearCase, пока выполняется первый (большой) импорт, а затем поставить базовую линию (метку UCM) на Ваш код и повторно импортируйте только дельту, эффективно завершая процесс миграции.
Сначала некоторые ресурсы:
Размер реального хранилища, количество файлов или их размеры не являются ограничивающим фактором для 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 и другими методами, упомянутыми выше.
- Да, Subversion может работать с очень большими проектами. Например, все проекты Apache находятся в одном репозитории Subversion, а подпроекты - это простые подпапки.
- Если имеет смысл конвертировать всю историю, то это вы должны решить сами. Но есть много доступных инструментов. Хороший пост в блоге можно найти здесь.
- Я не знаю, сколько времени займет такое преобразование. Но вы можете попробовать сначала с небольшим подмножеством и измерить время.