Что есть (было)
Есть 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 и их имена были понятны и так.
![](http://habrastorage.org/getpro/habr/post_images/5da/50b/96e/5da50b96e61321e0ac75bf9f983fe926.jpg)
Ошибок не возникло, однако 2000+ комитов, достаточно больших, с медленного сервера вытягивались долго.
Локально копию кода мы имеем. Дальше ее можем куда угодно push, ну а мы будем в TFS.
Шаг первый. TFS.
![](http://habrastorage.org/getpro/habr/post_images/c34/25d/c94/c3425dc94cd2da8d71633ba86487f7c3.jpg)
Запустить — согласиться с лицензией — готово. Даже как-то не интересно.
Шаг второй. SQLServer.
Дальше разобрались с 3 мелкими моментами с SQLSERVER при конфигурации.
SQLServer 2012 SP1- это минимальная версия, с которой можно работать на TFS2013. Пришлось поставить;
Разобрались с правами на уровне OS (серьезная контора, права порезаны);
Разобрались с collation, который у нас по умолчанию при установке был неверный; Требуется, чтобы Collation сервера был CI_AS Case- insensitive, ascent sensitive.
Мы решили проблему без перестановки сервера. В статье есть раздел про кодировки и смысл этих постфиксов.
Команда изменения collation
Шаг третий. Настройка TFS.
Мы установили TFS, но еще ничего не настроили.
![](http://habrastorage.org/getpro/habr/post_images/8a7/429/9a9/8a74299a9807a69a861bd3c334dca964.jpg)
![](http://habrastorage.org/getpro/habr/post_images/77b/141/e96/77b141e960f505281f9ca89dcad217c9.jpg)
![](http://habrastorage.org/getpro/habr/post_images/881/93f/4b8/88193f4b8a1c0bcf90e1faf4945d30f7.jpg)
![](http://habrastorage.org/getpro/habr/post_images/5b6/bd3/959/5b6bd3959c351de92ad9d18a29a26292.jpg)
Визард проверил можно ли такие настройки применить в принципе, но он их еще не применял.
![](http://habrastorage.org/getpro/habr/post_images/09d/46e/abf/09d46eabf21fa287674bad0a9132e29f.jpg)
Осталось только нажать Configure.
![](http://habrastorage.org/getpro/habr/post_images/c4c/0ab/95a/c4c0ab95ac9c13b167c5f3840b42ab22.jpg)
![](http://habrastorage.org/getpro/habr/post_images/83f/d2e/22e/83fd2e22e8c6fb5b2109cb9cc2d797db.jpg)
На выходе у нас есть TFS сервер, есть сконфигурированная база, есть веб портал администрирования. Все, что я хотел, в принципе.
![](http://habrastorage.org/getpro/habr/post_images/89d/aeb/868/89daeb86841d85574cd79cabcc8c83c3.jpg)
Шаг Четвертый. Создание Project Collection.
Хотя можно использовать и Default, но я люблю более осмысленные названия.
![](http://habrastorage.org/getpro/habr/post_images/db0/3bc/4c5/db03bc4c51f3cb6e916ce2ce1c47a07d.jpg)
![](http://habrastorage.org/getpro/habr/post_images/43d/ce0/e84/43dce0e84a821c4a2918756d0d829a8d.jpg)
![](http://habrastorage.org/getpro/habr/post_images/98c/846/fe1/98c846fe146cf0bb7253c408f265ca4d.jpg)
![](http://habrastorage.org/getpro/habr/post_images/2bd/2b0/e92/2bd2b0e92e26980944896ca836b5f3bf.jpg)
Шаг Пятый. Создание проекта.
Нужно создать проект, в котором будут храниться исходники и к которому будут привязаны пользователи. Идем в Visual Studio2013 (из 2012 вроде как нельзя создать Git-проект).
![](http://habrastorage.org/getpro/habr/post_images/c87/cfb/31b/c87cfb31b952d7d15eccc7e9ba8e20ba.jpg)
![](http://habrastorage.org/getpro/habr/post_images/4c6/4f7/8fc/4c64f78fc391440fc4f6dfecb6bdcebf.jpg)
![](http://habrastorage.org/getpro/habr/post_images/adb/653/c02/adb653c025a8efa3bf04bf9bb2dcb425.jpg)
![](http://habrastorage.org/getpro/habr/post_images/850/cfa/ed6/850cfaed63d8b070379eed137a177634.jpg)
Теперь у нас есть проект, к которому есть Git репозиторий.
Шаг шестой. Push на сервер.
Клонировав SVN репозиторий в Git, образовался тяжелый репозиторий. Просто так он не качается. Чтобы скачать, надо подкрутить конфигурацию.
Gitconfig —globalhttp.postBuffer 524288000
Ну, или руками вбить.
![](http://habrastorage.org/getpro/habr/post_images/f65/124/57a/f6512457a8949c007357fcd6acf96e86.jpg)
Теперь наши исходники лежат в TFS.
Шаг седьмой. Вычистка репозитория.
Мы решили, что нам история нужна, но не ветки. Удалили все ветки и tags. Затем вынесли содержимое trunk на уровень выше, в корень.
![](http://habrastorage.org/getpro/habr/post_images/4a6/6d7/93d/4a66d793d80d528f44425a2b5b2f8738.jpg)
В итоге, на выходе: 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/
Добавить комментарий