Избавляемся от Team Foundation Server - ставим Subversion
Таким образом основным инструментом становится не столько сама Visual Studio, которая хранит на локальном диске отдельного человека текст программы - сколько средство коллективного доступа к общему коду и коллективной правки одного и того же кода. В билогейтсовской идеологии таким инструментом является Team Foundation Server. Штука это глючная (нормально заработавшая только с версии 2008), ни с чем больше на кампутере не уживающаяся, требующая установки SharePoint и MS SQL Server в полной комплектации. Стоит эта игрушка сама по себе около 3 тысяч долларов плюс требует клиента к студии, собственно виндузню ($3,999.00), MS SQL Server в полной комплектации - $24,999.00 или $57,498.00 долларов на процессор. Ну и сама микрософтовская Visual Studio не каждая, а только те что подороже, например за $10,939.00 - умеют работать с TFS. Плюс там надо оплачивать клиенские коннекторы $7,999.00. Плюс функционал студии разбит по редакциям - чтобы чекать базу - нужно оплатить одну редакцию, программисту уже другую и так далее. Понятно, что такие цены - плод безумных фантазий Билла Гейтса. Я всегда говорил что дорогих праституток, пафосных яхт и роскошных особняков никогда много не бывает. Особенно в фантазиях самого богатого человека планеты.
Самое обидное, что технология поддерживаемая Team Foundation Server - практически бесполезна. Вот пример элементарнейшей операции, ежедневно выполняемой программистами. Чтобы сохранить наработанное я переименовал старую страничку Default.aspx в Default1.aspx. Потом создаю новый Default.aspx (унаследовав его от другой Master) и потихоньку туда переношу наработанные части кода из странички Defaut1. Казалось бы что особенного? Однако эта операция полностью выводит из строя синхронизацию локальной копии проекта с сервером. Ситуация разруливается только точной ручной работой на сервере - но зачем мне тогда эта система за тысячи долларов, если такое простое дело как создание новой странички и перенос в нее фрагментов кода из старой - полностью выводит эту систему из строя?
Или вот еще примерчик из жизни. У меня есть некий работающий сайт по недвижимости. Сейчас мне потребовалось добавить везде-везде по сайту еще количество спальных мест. Те я должен добавить во все таблы еще одно поле. Потом переделать вьюшки. Потом добавить параметр процедур. Потом переделать все SqlDatasource на страничках. Потом все обьекты, которые хранят состояния запросов. Ну и потом я зачекаю новый код. И каким оброзом я смогу откатится к старой версии сайта - если у меня уже и в помине нет старой структуры данных в базе и у меня даже не пройдет ни один SqlDataSource?
Я что должен купить еще студию Database Developer Edition за 7 тысяч долларов? Так она тоже бесполезна - у меня изменились теперь и все справочники в базе, а их и она не сохраняет. И как синхронизировать UIN структуры базы (и данных в справочниках!) с номером чека в TИМ?
Вопросы это риторические - все программисты понимают, что технология Team Foundation Server неработоспособна. Если бы это была бы просто очередная совершенно неработоспособная и безобидная чудо-технология - да хрен бы с ней. Я бы не удосужился уделить ей страничку на своем сайте. Но эта технология конкретно опасна для вашего бизнеса.
Поэтому на этой страничке мы рассмотрим безопасные и более качественные чем TFS решения. В принципе, конкурирующих с TFS решений cуществует немало (CVS, Git, Mercurial, Bazaa), но я остановлюсь лишь на одной технологии Subversion и клиентах этой системы - для коллективного доступа к программному коду или сопровождения версий меняющихся файлов некоторого проекта (или в целом любой папки с меняющимися файлами). Повторяться с общим описанием этой системы смысла нет - лучше чем описано http://ru.wikipedia.org/wiki/Subversion у меня все равно не получится.
Описание установки сервера Subversion я тоже не вижу смысла повторять - все это многократно разжевано в инете - Создание репозитория Subversion в OpenSuSE, Настройка Web-доступа к Subversion. На мой взгляд, при составлении таких инструкций на вещи надо смотреть шире - - совершенно не описано как же пользоваться с SVN даже с той же самой линуксовой машины, а тем более с кампутера под уиндауз или из IDE-программиста.
С этими вопросами я помогу разобраться на этой страничке.
Разумеется, если ваш кругозор ограничен только виндузней, то для повторения операций на этой страничке вам надо сначала выполнить Установка и начальное конфигурирование OpenSuse Linux.
Если вы не хотите возится с инсталляцией Linux так же как в убогой виндузне - по часу и более, а хотите выполнить инсталяцию Linux за 2 минуты (100-150 секунд в зависимости от быстродействия вашего кампутера) - то прочитайте хотя бы как выполняются инсталяции операционных систем по современным технологиям - Загрузочные компакты и флешки (bootable LiveCD and bootable USB).
Итак, выполняем OpenSuse-установку всех необходимых пакетов, включая клиента к Subversion (я поставил даже два GUI-клиента kdesvn и qsvn). Cоздаем директорию svn/repos. Далее даем svnadmin create и создается директория tst1 c базой SVN. Находим там два конфигурационных файла и правим их - passwd и svnserver.conf. Создаем юзера SVN и даем ему права на папку repos. И собственно стартуем SVN-сервер.
Процедуру организации Web-доступа к SVN повторять здесь не буду - она описана у меня на страничке Модернизация Web-сервера - долой платный софт и Hyper-V.
Теперь посмотрим как работать с репозиторием Subversion непосредственно из Linux-среды разработки .NET-программ на C# и Visual Basic. Находясь в управлении проектом MonoDevelop - выполняем публикацию проекта в Subversion, коннектимся к серверу и публикуем в него проект. После чего у всех элементов проекта появляется в контекстном меню дополнительные пункты по разрешению конфликтов и считыванию с сервера новых версий кода. Загруженных на сервер другими участниками коллективной разработки или же это могут быть мои же собственные предыдущие версии этого же кода.
GUI-клиент KDESVN дает возможность полного управления сервером Subversion. Коннектимся к серверу SVN и наблюдаем там несколько десятков пунктов меню по полному управлению репозиторием. Для данного примера я опубликовал на Subversion-сервере свой проект SNMP-тестер сетевых устройств. GUI-программа на Windows.Forms для Linux.
Для людей, с кругозором ограниченным виндузней, я также покажу, как поставить сервер Subversion на Windows:
C сервером SVN можно работать из Windows - непосредственно из эксплорера с помощью TortoiseSvn
Точно так же можно зачекать в SVN и линуксовый каталог (например чтобы отслеживать в нем изменения или передать кросплатформенный софт через SVN в виндузню).
Рассмотрим AnkhSVN - плагин для Visual Studio (2008 и 2010) позволяющий работать с сервером Subversion:
Subversion отлично поддерживается и в более развитых Opensource средах, чем MS Visual Studio. Например Adobe Flex Builder 4 - представляет собой платный плагин к OpenSource среде Eclipse. Сам по себе адобовский плагин стоит $249 (но по многим-многим основаниям распространяется бесплатно), но IDE NetBeans или IDE Eclipse всегда распространяется полностью бесплатно (как и Adobe Framework). В сборку Эклипса с плагином Adobe Flex Builder уже встроена поддержка системы управления версиями CVS, однако я привык с SVN и ниже я покажу как я добавил поддержку Subversion к Adobe Flex 4, создал новый репозиторий для своих Flex-проектов, зачекал туда свой проект на Flex 4 и обновил его из SVN в локальную файловую систему своего девелоперского кампутера.
Теперь я покажу еще одну типичную операцию - перенос репозитория с одного сервера на другой (с сохранением логинов и паролей пользователей сервера SVN). Как видите, я просто расшарил папку (дал ей права на чтение-запись из сервера, куда собираюсь переносить репозитории), затем выставил флажок блокировки репозитария (чтобы заблокировать базу от сервера из которого выносим репозиторий) и импортировал все репозитории. Затем просто скопировал логины и группы. При этом я еще и проапгрейдил репозитарии из формата старого сервера в формат нового.
На примере этого переноса репозитория вы можете видеть беспрецедентный уровень прозрачности SVN (характерный для Linux-решений) - например пользователи и группы описаны простыми текстовыми файлами. При этом заметьте, что безопасность решение от этого не страдает, ибо фактически хранятся только хеши паролей (так же хранятся пароли и в базе TFS). Но в TFS такое преобразование практически невозможно - и структура базы TFS не столь прозрачна, и импортировать формат базы TFS2008 в формат TFS2010 невозможно и импортировать структуру метабазы IIS из старого IIS в новый (для доступа по http) тоже невозможно.
Вы также видите гораздо более мощный функционал - например выше я показал, как TortoiseSvn напрямую чекает файловую систему в SVN (таким образом обычная файловая система становится версионной), вы видите, как симпатично TortoiseSvn и KDESVN отображается в виде графиков ветвления проектов, показал какие возможности при работе с SVN появляются у Visual Studio. Вы видите, то к серверу SVN отлично можно обращаться и из Linux и Windows (и размещать сам сервер тоже можно на Linux и Windows). Можно обращаться из OpenSource IDE и из Билогейтсовской IDE.
Как видите, по всем позициям SVN имеет тотальное превосходство над TFS. При этом SVN делает именно то, для чего предназначен - хранение для коллективного доступа различных версий одних и тех же файлов - а вот TFS задуман иначе. Его цель - вынудить вас купить полный MS SQL Server (потому что иначе TFS не становится - в TFS задействованы абсолютно все возможности MS SQL, включая даже самые одиозные, типа Report Server). Для TFS требуется именно полная серверная виндузня (ибо иначе не станет IIS и SharePoint) - иными словами, цель разработки TFS - не собственно хранение версий файлов как таковое, а создание предпосылок для все новых и новых покупок у секты Билла Гейтса.
Именно поэтому я держу все свои проекты (включая даже оригинал этого сайта и оригинал той странички что вы сейчас читаете) именно в SVN, а не в TFS:
|