Мои профессиональные обязанности связаны с разработкой CMS на ASP.Net. У нас уже сейчас более десятка клиентов, и все они время от времени хотят получать обновления :). Жестких релизов и «цикла поддержки» у нас нет, поэтому у каждого клиента может оказаться фактически произвольная версия.
Особенность такого цикла разработки всплывает в тех случаях, когда у клиента, последнее обновление которого было месяца 3-4 назад всплывает мелкий баг и клиент очень хочет его пофиксить. Однако обновиться до последней версии часто непросто, потому что система развивается очень быстро, и полноценное обновление скорее всего потребует комплексное обновление БД и 1С, что может быть довольно дорого по времени/усилиям/деньгам :)
Выход из этой ситуации довольно прост — при деплое сайта на каждого клиента необходимо создавать ветку, из которой при необходимости и проводить «горячие фиксы» клиента.
Здесь всплывает и чисто человеческий фактор, что «забыть» сделать ветку при деплое в спешке очень и очень легко, особенно если таких деплоев за день несколько :)
Дабы не страдать от подобной забывчивости я и решил автоматизировать процесс создания веток, а заодно и ознакомиться с возможностями расширения Visual Studio.
При деплое мы активно используем One-click publish (web deploy), который, кстати, всем рекомендую :) При таком способе процедура релиза сводится к выбору из выпадающего списка имени клиента и нажатию кнопки «Publish» после которой происходит сборка проекта и заливка его на сервер клиента (через FTP или Web-deploy handler ИИСа). При этом происходит upload только измененных файлов, что очень положительно сказывается на времени этого самого обновления.
Именно в процедуру one-click-publish я и решил интегрироваться, в итоге при нажатии на Publish адд-ин автоматически создает ветку с именем клиента (считанным из выпадающего меню) и датой создания ветки на основе текущих исходников. На всякий случай у адд-ина есть и собственная кнопка создания ветки (если по каким-то причинам деплой не требуется). Выглядит это всё как-то так:
В итоге в подавляющем большинстве случаев никаких дополнительных действий не требуется, и ветка создается в полностью автоматическом режиме.
Как оказалось, в создании add-in’а нет ничего сложного, в VS есть готовый шаблон проекта в разделе Other Project Types -> Extensibility -> Visual Studio Add-in. Для взаимодействия с кодом открытого проекта из адд-ина используется тот же объект DTE, с которым мы уже имели дело при создании шаблонов T4MVCJS. Ну а в создании тулбаров-кнопок меню мне очень помогла статья на сайте mz-tools. Привычным методом копипасты оттуда выдергивается исходный код и после внимательного его чтения выкидывается всё ненужное :)
Для желающих посмотреть как это сделано и/или стащить этот функционал к себе (или разработать подобный не для ТФС, а для других систем контроля версий) предоставляется зип: CreateBranchAddin
Ты в последнее время разошелся :)
В плане ОСС? :)
Ну это смена основной деятельности, что уж :) Веб сфера всегда была более динамичная и открытая, а тут еще и майкрософт постарался с мвц и открытием исходников.. всё способствует :)