Freigeben über


Как мигрировать с SVN на TFS

Многие команды, которые используют Subversion для хранения исходных кодов к некоторому моменту начинают задумываться о построении полноценной среды управления жизненным циклом разработки (Application Lifecycle Management). При этом возникают непростые вопросы. В первую очередь это то, как объединить средства контроля версий, управления задачами, багами, артефактами и сборками проекта в единую систему. Путей тут два – либо развивать текущий комплекс, постепенно подключая к нему недостающие компоненты, либо мигрировать на систему, которая все эти компоненты содержит. Для тех команд, которые используют в качестве основного инструмента Visual Studio, подходящим вариантом является Team Foundation Server. Но при этом возникает несколько важных вопросов – как минимизировать время простоя команды, а еще лучше сделать процесс миграции незаметным.

Мигрируем с SVN на TFS

C помощью инструмента SVN2TFS svn2tfs.codeplex.com возможен перенос всех наборов изменений из репозитария Subversion на сервер TFS. Инструмент этот достаточно простой и очевидный для использования:

Указываем URL SVN репозитария и путь из которого хотим проводить импорт, далее указываем реквизиты TFS. Единственная небольшая сложность это подготовить файл User Mapping.
Для этого перед операцией импорта следует нажать на кнопку «Validate SVN» и утилита выведет полный список всех пользователей в SVN репозитарии. Всех пользователей следует определенным образом соотнести с пользователями TFS в следующем формате:

После импорта в TFS окажется вся история изменений файлов с комментариями:

При таком импорте следует учитывать два момента. Первый – даты изменений в TFS будут фактические а не те которые хранятся в исходном репозитарии. Тут уж ничего не поделаешь, так как TFS берет фактическую дату checkin по текущему времени. Второй важный момент это поддержка svn externals. В TFS нет аналогичного механизма, все что можно пока рекомендовать это использовать бранчи для организации чего то подобного.

Делаем из TFS Subversion

После миграции надо подключать старых клиентов SVN к новому серверу TFS. А что если у вас окружение, в котором были разные клиенты, к примеру, не только Visual Studio? Возможно для них нет расширения для подключения TFS. Поэтому для таких клиентов мы можем оставить все как есть, они будут работать с TFS но при этом будут считать что работают с SVN.
Для этого нам пригодится утилита SvnBridge svnbridge.codeplex.com/. Скачиваем с сайта архив Server, распаковываем в каталог c:\svnbridge и создаем в IIS 7.0 приложение:

Не забываем так же сконфигурировать Web.Config этого приложения указав адрес TFS сервера:

Остальные настройки скорее всего можно будет оставить по умолчанию. Если нигде не ошиблись, то легко можно проверить работоспособность SvnBridge с помощью браузера. Вы должны увидеть список своих проектов в TFS:

Другим вариантом является использование «Клиента» svnbridge который по сути является локальным сервером. Эта утилита после запуска сидит в трее по порту который указывается в начале запуска и затем форвардит все запросы из формата SVN на сервер TFS.
По сути этого достаточно чтобы продолжить работу тех разработчиков, которые пользовались Subversion сервером. Нужно будет только переконфигурировать адрес сервера в клиенте которым они пользовались. Поддерживаются все основные команды SVN протокола.

Заключение

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