Миграция кода из SVN на Git в TFS2013

в 5:11, , рубрики: Git, svn, tfs 2013, Visual Studio, метки: , ,

Что есть (было)

Есть SVN сервер, и довольно старый – 2008 года. Обновлять его опасаются: «мало ли что». Бэкапы-не бэкапы, создать себе проблему и героически из нее выходить не хочется.

Что хочется (есть)

Осовременить средства и методики разработки. Как минимум – получить возможность делать локальные комиты. В итоге решили перейти на Git. С Git у некоторых людей в команде был опыт, причем хороший, и поэтому решили всерьез и не думать о других распределенных системах.

Чего при этом не хочется

Не хотелось заморачиваться администрированием, не хотелось «менеджерить» из консоли права. Ну и лично мне не хотелось лезть в дебри Linux (не религии ради, а просто есть еще и другие задачи, да и в команде почти все на Windows сидят), плюс из свободных у нас были только Windows машины.

Поиск решения на Windows

Я прочел много разных статей на тему Git Server on Windows. Общая картина удручает: как-то сложно все, где-то – наполовину мертво, где-то – без GUI. Вот из местных русскоязычных статей есть небольшой список проектов:. Я честно попробовал рекомендованный автором ITeF!X и, видимо, у меня руки не из того места росли, но я не осилил(То прав не хватало на создание аккаунта, то putty закэшировало в реестре публичный ключ сервера, а я его сменил.). Ну и, честно говоря, уровень GUI – просто отстой, привет Windows 95.
В итоге, мы-таки решились поставить TFS2013 и Git и мигрировать код. Можно почитать статью Димы Андреева на тему плюшек TFS2013 и Git: Большая часть наших разработчиков не на .net пишут, поэтому интеграция с Visual Studio совершенно не интересно.

Шаг Ноль. Миграция в локальный репозиторий.

Сама по себе миграция кодов — это 1 команда – git svn clone, и затем push. Разбирать сами команды смысла не имеет. Важно что git svn clone выкачивает коды из svn репозитария и складывается в локальный git.
Из GUI как-то приятнее работать, поэтому я воспользовался GitExtensions.

Клонируем SVN в Git локальный.

«C:Program Files (x86)GitbinGit.exe» SVN clone «SVN://SERVERNAME/SubfolderName» «C:/Users/sycheviy/desctop/MyPath»
Файл с пользователями составлять не нужно было, т.к. в SVN сами по себе пользователи брались из ActiveDirectory и их имена были понятны и так.Миграция кода из SVN на Git в TFS2013

Ошибок не возникло, однако 2000+ комитов, достаточно больших, с медленного сервера вытягивались долго.
Локально копию кода мы имеем. Дальше ее можем куда угодно push, ну а мы будем в TFS.

Шаг первый. TFS.

Поставили TFS на Windows Server 2008r2.

Миграция кода из SVN на Git в TFS2013

Запустить — согласиться с лицензией — готово. Даже как-то не интересно.

Шаг второй. SQLServer.

Дальше разобрались с 3 мелкими моментами с SQLSERVER при конфигурации.
SQLServer 2012 SP1- это минимальная версия, с которой можно работать на TFS2013. Пришлось поставить;
Разобрались с правами на уровне OS (серьезная контора, права порезаны);
Разобрались с collation, который у нас по умолчанию при установке был неверный; Требуется, чтобы Collation сервера был CI_AS Case- insensitive, ascent sensitive.
Мы решили проблему без перестановки сервера. В статье есть раздел про кодировки и смысл этих постфиксов.
Команда изменения collation

Шаг третий. Настройка TFS.

Мы установили TFS, но еще ничего не настроили.

Открываем консоль управления TFS

Миграция кода из SVN на Git в TFS2013

Выбираем тип конфигурации.

Я не стал усложнять сильно и выбрал базовый.Миграция кода из SVN на Git в TFS2013

Выбрали сервер баз данных который будем использовать для хранения пользователей и тп.

Миграция кода из SVN на Git в TFS2013

Взглянули на список параметров получившийся.

Миграция кода из SVN на Git в TFS2013

Нажали проверить

— если с базой будут проблемы, тут мы и получим сообщение о проблеме.
Визард проверил можно ли такие настройки применить в принципе, но он их еще не применял.Миграция кода из SVN на Git в TFS2013

Осталось только нажать Configure.

Проверяем что приложение появилось в iis.

Должен был появиться сайт.
Миграция кода из SVN на Git в TFS2013

И проверяем что в базе все было создано

Миграция кода из SVN на Git в TFS2013

На выходе у нас есть TFS сервер, есть сконфигурированная база, есть веб портал администрирования. Все, что я хотел, в принципе.

Как бонус портал, на котором можно управлять пользователями, группами, смотреть код и так далее.

Миграция кода из SVN на Git в TFS2013

Шаг Четвертый. Создание Project Collection.

Хотя можно использовать и Default, но я люблю более осмысленные названия.

Создание ProjectCollection

Миграция кода из SVN на Git в TFS2013
Миграция кода из SVN на Git в TFS2013
Миграция кода из SVN на Git в TFS2013
Миграция кода из SVN на Git в TFS2013

Шаг Пятый. Создание проекта.

Нужно создать проект, в котором будут храниться исходники и к которому будут привязаны пользователи. Идем в Visual Studio2013 (из 2012 вроде как нельзя создать Git-проект).

подключаемся к TFS серверу

Миграция кода из SVN на Git в TFS2013

создаем team project

Возможно, можно как-то еще, но я сделал первым попавшимся методом.
Миграция кода из SVN на Git в TFS2013

Шаблон проекта

нам был, в общем-то, не нужен, т.к. задачи мы не храним в TFS, но, что поделать, придется шаблон создать.
Миграция кода из SVN на Git в TFS2013

Выбираем систему хранения исходников. Git, конечно.

Миграция кода из SVN на Git в TFS2013

Теперь у нас есть проект, к которому есть Git репозиторий.

Шаг шестой. Push на сервер.

Клонировав SVN репозиторий в Git, образовался тяжелый репозиторий. Просто так он не качается. Чтобы скачать, надо подкрутить конфигурацию.
Gitconfig --globalhttp.postBuffer 524288000
Ну, или руками вбить.

Добавляем в список Remote нашего TFS. B Push.

Миграция кода из SVN на Git в TFS2013

Теперь наши исходники лежат в TFS.

Шаг седьмой. Вычистка репозитория.

Мы решили, что нам история нужна, но не ветки. Удалили все ветки и tags. Затем вынесли содержимое trunk на уровень выше, в корень.

Веб морда к репозитарию исходников

Миграция кода из SVN на Git в TFS2013

В итоге, на выходе: Git Server на Windows с нормальным менеджментом прав от TFS.
Т.к я все делал через Git Extensios, а коллеги проверили из 3 других клиентов, то далее можно вообще забыть о том, что Git хоститься в TFS и работать с ним не вспоминая об этом.

Ложка Дегтя

Git поддерживается хорошо, но не все фишки Visual Studio и TFS, доступные для оригинального хранилища кода, поддерживаются в Git. Например CodeReview. Мы хотели вставить CoreReview перед Push, в центральный репозиторий. Пока этого нет, но всегда можно пропушить разработчиков в Visual Studio/TFS: и голосовать за добавление фичей. Я лично за CodeReview проголосовал.

Автор: SychevIgor

Источник

Поделиться

* - обязательные к заполнению поля