Перенос кодовой базы с TFS на GIT

77 views
Skip to first unread message

Денис

unread,
Sep 29, 2016, 3:26:00 PM9/29/16
to dotne...@googlegroups.com
Всем привет! 

У кого-нибудь  есть опыт переезда с TFS на Git? Как считаете, какие подводные камни могут быть и самое главное сколько это на может потребоваться времени? 

--

С уважением,
Тарасов Денис

Не печатайте это письмо, если в этом нет необходимости. Защита окружающей среды в наших руках.

abakumov.v91

unread,
Sep 30, 2016, 2:42:12 AM9/30/16
to dotnetconf
Добрый день!

Прошли через это :)

  1. Выбираем и развертываем нормальный Git-сервер (мы долго выбирали: либо нормальный, но платный, либо бесплатный, но какой-то отстойный, в итоге выбор пал на Gogs Git Server - он бесплатный, написан на языке Go, очень легко развертывается и очень легко бэкапится).
  2. Клонируем все нужные репозитории со всеми нужными ветками локально на Ваш комп.
  3. Естесственно, на время переноса все репозитории должны содержать актуальные данные (на этот случай я просто предупреждал коллег, чтобы они все нужные изменения запушили на сервер).
  4. Перенос осуществляется набором команд в Git Bash:
    1. сам перенос описан здесь: https://gist.github.com/manakor/8972566
    2. после переноса на Вашем компе все ветки станут "отсоединенными" (неотслеживаемыми). Соответственно, их нужно сделать отслеживаемыми. Если не знаете как, напишу в другом сообщении.
    3. после переноса Ваши коллеги должны:
      1. либо изменить адрес удаленного репозитория (опять-таки с помощью команд "git remote add...", "git remote rm...", "git remote rename...") и сделать ветки ослеживаемыми;
      2. либо просто склонировать репозитории заново в другую локальную папку.
Поначалу было страшновато, но на самом деле все достаточно просто. Если следовать инструкции, то все получится. Будут вопросы - пишите.

С уважением, Абакумов Валерий.

четверг, 29 сентября 2016 г., 22:26:00 UTC+3 пользователь denis.tarasov.netwrix написал:

Yuri Fedoseev

unread,
Sep 30, 2016, 2:51:10 AM9/30/16
to dotne...@googlegroups.com
Привет, могу поделиться своим опытом. Переносили кодовую базу, которую до этого девелопили около 5 лет. Всего разработчиков было около 25. Ничего принципиального сложного не было, больше всего времени заняло команды работе с git и принципов его работы. Несколько важных поинтов
  • Каждый разработчик должен понимать как git работает и как он устроен. Как организованы коммиты, что такое бранчи в git и т.п. Иначе вероятность выстрелить в ногу намного выше чем в tfs. Мы дали ссылки на курсы\книги, потом провели что-то типа экзамена по git.
  • Мы приняли правило, что все сначала должны научиться работать с git через консоль и лишь потом переходить на визуальные элементы - опять же, чтобы понимать ,что происходит внутри.
  • Если команда большая, то имеет смысл принять общий how-to на основные операции. Например, использовать merge или rebase, что делать в случае ошибок, как откатываться и т.п.
  • Структура репозитория: у нас в tfs все было в одном репо. Перед переездом мы решили, что в git у нас будет несколько маленьких репозиториев, вместо больших, поэтому в начале мы провели разделение в tfs. Соответственно, в этот момент сохранение истории изменений нас перестало интересовать.
  • Хранение больших файлов. В git не рекомендуют хранить большие файлы, например, бинарники. Из-за особенностей хранения в будущем это может привести к тормозам при работе с репо, поэтому лучше вначале от всех таких файлов избавиться от переноса. Например, убедиться, что все 3-d party libraries подключаются через nuget и папка packages не под соурс контролом. Подробнее тут http://blog.deveo.com/storing-large-binary-files-in-git-repositories/
Самое важное - понять, чем обусловлен этот переезд. Дань моде на git или реальной потребностью? У tfs отличная интеграция со студией, понятный интерфейс и воркфлоу, гораздо меньше возможностей накосячить при работе с ним. Так что для многих случаев это очень неплохой инструмент. Лично мы столкнулись с двумя проблемами:
  1. Проблемы производительности. При росте команды нужно либо покупать более мощный сервер, иначе тормоза, либо уходить в cloud, который для tfs достаточно дорог.
  2. Изменение workflow. Мы перешли на ежедневные релизы и модель feature branch в гит позволила команде быть гибче при тестинге и релизе новых фич.




--

---
Вы получили это сообщение, поскольку подписаны на группу "dotnetconf".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес dotnetconf+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

abakumov.v91

unread,
Sep 30, 2016, 4:20:09 AM9/30/16
to dotnetconf
Совершенно забыл сказать, что переезд с TFS на Git мы осуществляли с учетом того, что уже почти все репозитории были на Git'е (т.е. репозитории находились на Git под управлением TFS >=2013). Если у Вас сейчас все репозитории под управлением TFS (под TFS здесь я имею в виду и систему контроля версий, и систему управления проекатм), тогда задачка для Вас усложнится, но общие принципы останутся такими же: сначала всё выкачиваем на свой локальный комп, затем вместо папок (на которые TFS маппит ветки) создаем Git-ветки, в них заливаем содержимое этих папок и коммитим. В этом плане совет Yuri Fedoseev Вам больше подойдет.

пятница, 30 сентября 2016 г., 9:42:12 UTC+3 пользователь abakumov.v91 написал:

Денис

unread,
Sep 30, 2016, 5:53:13 AM9/30/16
to dotne...@googlegroups.com
Спасибо за развернутые ответы!

Да, у нас сейчас все репозитории под управлением TFS, написано много кастомных билд дефинишенов и активити. 
Плюс у нас развернут nuget сервер, который также задействован в процессе построения сборок (при билде ресторим пакеты).
Можно ли оставить схемы построения прежними после переезда на гит или нужно будет полностью менять схему и стоит смотреть в сторону TeamCity? 

30 сентября 2016 г., 11:20 пользователь abakumov.v91 <abakum...@gmail.com> написал:

--

---
Вы получили это сообщение, поскольку подписаны на группу "dotnetconf".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес dotnetconf+unsubscribe@googlegroups.com.

Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

abakumov.v91

unread,
Sep 30, 2016, 6:06:55 AM9/30/16
to dotnetconf
Денис, пусть вопрос Nuget Вас не волнует, т.к. он достаточно легко внедряется, как мне кажется, в любую CI-систему (у нас стоит Jenkins). 

Лично мы отказались от TFS в силу его: 1) высокой стоимости; 2) трудности бэкапа (точнее, бэкап Gogs + MySQL БД производить гораздо легче и быстрее, да к тому же занимают мало места на диске, чем бэкап и восстановление TFS и MS SQL). К тому же TFS крутится, насколько я знаю, только на MS SQL Server, а это очередные затраты как ресурсов (и денежных, и место на диске - БД весила 12 Гб на момент перехода на Gogs), в то время как MySQL можно использовать бесплатно). 

пятница, 30 сентября 2016 г., 12:53:13 UTC+3 пользователь denis.tarasov.netwrix написал:
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес dotnetconf+...@googlegroups.com.

Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages