...

пятница, 28 февраля 2014 г.

Миграция кода из 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 «http://SVNSERVERNAME/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 проголосовал.

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий