Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Многие команды, которые используют 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 позволяющие настроить взаимосвязи исходного кода и рабочих элементов, управление задачами и багами, подсистемы сборки, аналитику и многие другие возможности управления жизненным циклом разработки.