Что есть (было)
Есть 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 сами по себе пользователи брались из ActiveDirectory и их имена были понятны и так.
Ошибок не возникло, однако 2000+ комитов, достаточно больших, с медленного сервера вытягивались долго.
Локально копию кода мы имеем. Дальше ее можем куда угодно push, ну а мы будем в TFS.
Шаг первый. TFS.
Запустить — согласиться с лицензией — готово. Даже как-то не интересно.
Шаг второй. SQLServer.
Дальше разобрались с 3 мелкими моментами с SQLSERVER при конфигурации.
SQLServer 2012 SP1- это минимальная версия, с которой можно работать на TFS2013. Пришлось поставить;
Разобрались с правами на уровне OS (серьезная контора, права порезаны);
Разобрались с collation, который у нас по умолчанию при установке был неверный; Требуется, чтобы Collation сервера был CI_AS Case- insensitive, ascent sensitive.
Мы решили проблему без перестановки сервера. В статье есть раздел про кодировки и смысл этих постфиксов.
Команда изменения collation
Шаг третий. Настройка TFS.
Мы установили TFS, но еще ничего не настроили.
Визард проверил можно ли такие настройки применить в принципе, но он их еще не применял.
Осталось только нажать Configure.
На выходе у нас есть TFS сервер, есть сконфигурированная база, есть веб портал администрирования. Все, что я хотел, в принципе.
Шаг Четвертый. Создание Project Collection.
Хотя можно использовать и Default, но я люблю более осмысленные названия.
Шаг Пятый. Создание проекта.
Нужно создать проект, в котором будут храниться исходники и к которому будут привязаны пользователи. Идем в Visual Studio2013 (из 2012 вроде как нельзя создать Git-проект).
Теперь у нас есть проект, к которому есть Git репозиторий.
Шаг шестой. Push на сервер.
Клонировав SVN репозиторий в Git, образовался тяжелый репозиторий. Просто так он не качается. Чтобы скачать, надо подкрутить конфигурацию.
Gitconfig --globalhttp.postBuffer 524288000
Ну, или руками вбить.
Теперь наши исходники лежат в TFS.
Шаг седьмой. Вычистка репозитория.
Мы решили, что нам история нужна, но не ветки. Удалили все ветки и tags. Затем вынесли содержимое trunk на уровень выше, в корень.
В итоге, на выходе: Git Server на Windows с нормальным менеджментом прав от TFS.
Т.к я все делал через Git Extensios, а коллеги проверили из 3 других клиентов, то далее можно вообще забыть о том, что Git хоститься в TFS и работать с ним не вспоминая об этом.
Ложка Дегтя
Git поддерживается хорошо, но не все фишки Visual Studio и TFS, доступные для оригинального хранилища кода, поддерживаются в Git. Например CodeReview. Мы хотели вставить CoreReview перед Push, в центральный репозиторий. Пока этого нет, но всегда можно пропушить разработчиков в Visual Studio/TFS: и голосовать за добавление фичей. Я лично за CodeReview проголосовал.
Автор: SychevIgor