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

от автора

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

Есть 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)\Git\bin\Git.exe» SVN clone «SVN://SERVERNAME/SubfolderName» «C:/Users/sycheviy/desctop/MyPath»
Файл с пользователями составлять не нужно было, т.к. в SVN сами по себе пользователи брались из ActiveDirectory и их имена были понятны и так.

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

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

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

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

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

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

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

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

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

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

Я не стал усложнять сильно и выбрал базовый.

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

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

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

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

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

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

Должен был появиться сайт.

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

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

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

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

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

Создание ProjectCollection




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

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

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

создаем team project

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

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

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

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

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

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

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

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

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

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

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

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

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

Ложка Дегтя

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

ссылка на оригинал статьи http://habrahabr.ru/post/214157/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *