Пример быстрого реагирования — утилита командной строки для создания сценариев ветвления TFS

Образцы Quick Response  представлены членами сообщества Visual Studio ALM Rangers, напрямую сотрудничающими с группами по продуктам Microsoft Visual Studio и Microsoft Services. Эти образцы помогут ликвидировать пробелы в сведениях о продукте и базе знаний.

Задача

Реализовать внутреннюю последовательную модель ветвления, являющуюся частью проекта группы или проекта создания группы, которая соответствует «Руководству по ветвлению и слиянию VS TFS», весьма непросто.

Решение

 Team  Foundation  Server поддерживает pасширенный контроль версий и управление ветвлением через объектную модель. Разработчики могут создавать собственные решения, используя пример утилиты командной строки, входящий в состав пакета Quick
Response
.

Образец

Чтобы использовать пример, выполните следующие действия:

  • Выполните повторное построение образца кода с помощью решения Visual Studio 2012, которое требует модель объектов (OM) TFS.
  • Запустите утилиту TfsBranchTool.exe посредством командной строки с параметром /?.

Примеры:

  • TfsBranchTool /?
  • TfsBranchTool "Main only" /?
  • TfsBranchTool "Main only"  /ProjectCollectionUrl:"https://vstsr-vm2012rtm:8080/tfs/DefaultCollection" /TeamProject:QRTest /RootFolder:"$/QRTest/cmdline/test/mainonly"
  • TfsBranchTool Basic /ProjectCollectionUrl:"https://vstsr-vm2012rtm:8080/tfs/DefaultCollection" /teamproject:QRTest /RootFolder:"$/QRTest/cmdline/test/basic"
  • TfsBranchTool Feature /ProjectCollectionUrl:"https://vstsr-vm2012rtm:8080/tfs/DefaultCollection"/TeamProject:QRTest /RootFolder:"$/QRTest/cmdline/test/feature"/FeatureName:f-One 

Проектная группа

Неформальное интервью с группой

Чтобы показать увлеченность, талант и мотивацию участников проекта к созданию этого решения, мы задали каждому из них по одному вопросу.

  • Маттиас, это решение, предназначенное для быстрого реагирования, стало вторым в вашей практике. Почему вы начали работать над ним?
    Я часто пользовался руководством по ветвлению и был совсем не в восторге от ручной работы. Мне требовалось интегрированное и автоматизированное решение. Мне представилась отличная возможность создать действительно полезную вещь. Перспективы этого проекта просто потрясали. Когда мне предложили реализовать задуманное в составе международной группы разработчиков, я не колебался ни секунды.
  • Владимир,  чем по сути является обработчик правил и почему вы выбрали именно такую реализацию?
    Обработчик действий (он же обработчик правил) был разработан как очень абстрактная объектная модель, которая позволяет определить любую последовательность действий и выполнять их одно за другим. Идея заключалась в том, чтобы разделить операции инструмента ветвления на элементарные действия, такие как создание каталога SCC, выполнение ветвления, возврат и тому подобные. Объединение этих базовых действий в различных последовательностях позволяет создать самые разные модели ветвления, представленные в руководстве. Мы понимали, что модели ветвления часто меняются и в будущем придется добавлять новые базовые операции. Поэтому мы реализовали возможность настройки обработчика через XML и его расширения без перекомпиляции. Схема очень простая и функциональная — XML позволяет определять любые действия и параметры. Вы можете передать выходные параметры предыдущего действия следующему через макрорасширяемые свойства. Каждое действие определяется именем и внутренним идентификатором обработчика через Managed Extensibility Framework.
  • Томас, каковы особенности средства синтаксического анализа командной строки?
    Это средство не очень богато особенностями. Его преимущество — в совместном использовании с обработчиком действий. Он может применять те же самые параметры из конфигурационных xml-файлов. Вначале он запрашивает доступные команды, а затем параметры для этих команд. Сложность состояла в том, чтобы создать компонент программного обеспечения, который взаимодействовал бы с другим компонентом –– практически без спецификаций и возможности связи, за исключением непосредственных запросов. Когда мы полагали, что все уже готово, то замечали кое-какие упущенные детали. Дело в том, что это решение быстрого реагирования. Приходилось работать лишь несколько часов в неделю и сотрудничать с людьми в нескольких часовых поясах, при этом наши еженедельные расписания различались. Все это делало задачу очень интересной, вдохновляющей и сложной! Очень приятно было работать с действительно талантливыми и увлеченными людьми!
  • Эстебан,  что вы можете рассказать о совместной работе с Маттиасом над проектированием и реализаций логики управления версиями?
    Проверка логики управления версиями оказалась непростой задачей. У нас не было в постоянном распоряжении сервера TFS, чтобы выполнять тесты, и, конечно, мы не проверяли функциональность TFS. Поэтому для тестирования, так сказать, функциональности TFS мы использовали платформу Fakes. И наши ожидания более чем оправдались. Мы смогли проверить логику управления версиями безо всякой зависимости от TFS.

Важные замечания

Этот образец быстрого реагирования был частью проверки «New Deliverable Experience». Более подробная информация содержится в материалах «Повышаем планку качества для инструментов (часть 1)» и «…для документации (часть 2».

Планы на будущее

  • Расширение Visual Studio Team Explorer появится в ближайшем будущем! 

  • Расширение мастера создания группового проекта.

  • Работа со специалистами ALM Rangers и ALM MVP позволяет расширить набор инструментов данного сообщества.