Опубликован: 25.03.2010 | Уровень: специалист | Доступ: платный
Дополнительный материал 4:

Практикум

Как создать пользовательскую политику возврата после правки в Visual Studio Team Foundation Server

Область применения

  • Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) .
  • Microsoft Visual Studio Team System.

Описание

В этой статье подробно разбирается процесс создания, регистрации и применения пользовательских политик возврата правок в TFS. Политика обеспечивает выполнение определенных правил при каждом возврате изменений в систему управления исходным кодом. Благодаря этому исходный код гарантированно будет соответствовать заданному набору критериев. В качестве примера в этой статье используется политика, обеспечивающая ввод комментариев ко всем возвратам изменений. Для реализации пользовательской политики возврата изменений создается класс, производный от РoliсуВa8е, и реализуются интерфейсы 1РoliсуВеАnition и 1РoliсуЕ valuation. Сборка политики регистрируется в реестре Microsoft Windows® и применяется к командному проекту.

Содержание

  • Задачи.
  • Обзор.
  • Прежде всего.
  • Порядок операций.
  • Шаг 1 - создание и сборка класса пользовательской политики.
  • Шаг 2 - регистрация класса пользовательской политики в реестре Windows.
  • Шаг 3 - применение пользовательской политики.
  • Шаг 4 - проверка работоспособности пользовательской политики.
  • Дополнительные ресурсы.

Задачи

  • Разобраться с тем, что такое пользовательская политика возврата изменений.
  • Научиться создавать, регистрировать и применять специальные политики возврата изменений.

Обзор

Политики возврата после правки ( check-in policies ) обеспечивают реализацию ограничений при возврате файлов в систему управления исходным кодом. В Team Foundation Server включено несколько стандартных политик, в том числе, политики для проверки выполнения и успешного прохождения модульных тестов, политики для выполнения статического анализа кода, гарантирующие соответствие кода стандартам и рекомендациям написания .NET -кода, и политики, обеспечивающие связывание рабочих элементов с возвратами правок. Еще несколько политик возврата после правки включено в комплект Microsoft Visual Studio 2005 Team Foundation Power Tool. В этой статье рассказывается, как создавать, регистрировать и применять нестандартную политику. В качестве примера приводится политика, вынуждающая разработчиков сопровождать возвращаемые изменения комментариями.

Прежде всего

Чтобы вы могли создавать политику возврата после правки, разрешение Manipulate у вас должно иметь значение Allow.

Порядок операций

  • Шаг 1 - создание и сборка класса пользовательской политики.
  • Шаг 2 - регистрация класса пользовательской политики в реестре Windows.
  • Шаг 3 - применение пользовательской политики.
  • Шаг 4 - проверка работоспособности пользовательской политики.

Шаг 1 - создание и сборка класса пользовательской политики

На начальном этапе в пространстве имен Microsoft.TeamFoundation.Version-Control.Client путем наследования от базового класса PolicyBase создается класс пользовательской политики. Наследование обеспечивает реализацию создаваемым классом интерфейсов IPolicyDefinition и IPolicyEvaluation. Ниже приведен пример фрагмента кода политики, которая требует обязательного ввода комментариев при каждом возврате правок.

  1. В Visual Studio создайте новый проект библиотеки классов Visual C#®.
  2. Добавьте ссылку на файл сборки System.Windows.Forms.dll. Эта сборка используется для отображения информационных окон.
  3. Добавьте ссылку на файл сборки Microsoft.TeamFoundation.Version Control.Client.dll. По умолчанию он находится в папке \Program Files\ Visual Studio 2005 Team Foundation Server\Tools.
  4. Замените шаблонную реализацию класса следующим исходным кодом. Обратите внимание, что класс наследуется от базового класса PolicyBase и помечен как сериализуемый.
using System;
using System.Windows.Forms;
using Microsoft.TeamFoundation.VersionControl.Client;
[Serializable]
public class CheckForCommentsPolicy : PolicyBase
{
public override string Description
{
get { return "Напоминает пользователям, что они должны сопровождать возврат изменений содержательными комментариями";
}
// Эта строка хранится с описанием политики на сервере системы управления исходным кодом.
// Если у пользователя не установлена надстройка политики, отображается эта
// строка. С ее помощью вы объясняете пользователю, как установить
// надстройку политики.
public override string InstallationInstructions
{
get { return "Инструкции по установке этой политики см. в InstallInstructions.txt."; }
}
// Эта строка определяет тип политики. Она отображается в списке политик, когда вы
// добавляете новую политику в Team Project.
public override string Type
{
get { return "Политика для проверки наличия комментариев к возврату изменений"; } }
// Эта строка является описанием типа политики. Она отображается, когда вы
// выбираете политику в диалоговом окне Add Check-in Policy.
public override string TypeDescription
{
get { return "Эта политика подскажет пользователю, на каких условиях ему будет разрешено возвратить изменения."; }
}
// Этот метод вызывается инфраструктурой написания политик при создании 
// новой политики возврата изменений или редактировании существующей. 
// Он может использоваться для отображения интерфейса для данного типа политики,
// позволяя пользователю менять параметры политики. public override bool Edit(IPolicyEditArgs args) {
// Не требует специальной конфигурации
return true; }
// Этот метод является фактической реализацией политики. Он вызывается
// инфраструктурой создания политик, когда требуется применить политику. 
// В приведеннм примере метод вызывается при возникновении различных асинхронных
// событий, которые могли привести к недействительности текущего списка
// нарушений политики.
public override PolicyFailure[] Evaluate()
{
string proposedComment = PendingCheckin.PendingChanges.Comment;
if (String.IsNullOrEmpty(proposedComment))
{
return new PolicyFailure[] {
new PolicyFailure("Пожалуйста, сопроводите возвращаемые изменения комментариями", this) }; }
else {
return new PolicyFailure[0]; } }
// Этот метод вызывается двойным щелчком нарушения политики в интерфейсе.
// В данном случае на экран выводится сообщение,  предлагающее пользователю
// ввести комментарий.
public override void Activate(PolicyFailure failure)
{
MessageBox.Show("Пожалуйста, сопроводите возвращаемые изменения комментариями.", "Как устранить нарушение политики"); }
// Этот метод вызывается, если пользователь нажимает кнопку F1 при активном
// нарушении политики в интерфейсе. В данном примере на экран выводится сообщение.
public override void DisplayHelp(PolicyFailure failure)
{
MessageBox.Show("Данная политика напоминает о необходимости сопровождения возвращаемых изменений комментариями.", 
 "Prompt Policy Help");
 } 
}

Шаг 2 - регистрация класса пользовательской политики в реестре Windows

На этом шаге вы добавите запись в реестр Windows, благодаря чему ваша политика будет отображаться в диалоговом окне Add Check-in Policy. Учтите, что сборка политики должна быть установлена на все компьютеры, где предполагается ее использовать. К ним относятся компьютер администратора командного проекта, который должен связать политику с проектом, и все компьютеры членов команды, на которых эта политика фактически реализуется.

Важно! Политика проверяется на клиенте, когда разработчик возвращает файл в систему управления исходным кодом.

  1. Запустите Regedit.exe и найдите раздел HKEY_LOCAL_MACHINE\ Software\Microsoft\VisualStudio\8.0\TeamFoundation\SourceControl\ Checkin Policies. Список зарегистрированных политик выводится в правой панели.
  2. Щелкните правой кнопкой правую панель, выберите команду Создать (New) и щелкните Строковый параметр (String Value) .
  3. Введите имя DLL -библиотеки своей пользовательской политики без расширения, например, CheckForCommentsPolicy, как в рассмотренном выше примере.

    Важно! Строка должна точно соответствовать имени DLL -файла - без расширения DLL.

  4. Щелкните дважды новой строковый параметр и задайте в качестве значения полный путь и имя файла .dll.

Шаг 3 - применение пользовательской политики

Теперь добавим пользовательскую политику в командный проект. Это гарантирует, что политика будет выполняться при каждом возврате файла.

  1. В Team Explorer щелкните правой кнопкой свой командный проект, выберите Team Project Settings и щелкните Source Control.
  2. Перейдите на вкладку Check-in Policy и щелкните Add.
  3. Выберите политику Check for Comments Policy и дважды щелкните OK. Теперь политика будет применяться при каждом возврате файла в этом командном проекте.

Шаг 4 - проверка работоспособности пользовательской политики

Попробуйте возвратить в систему файл исходного кода, чтобы убедиться, что пользовательская политика работает правильно.

  1. Внесите изменения в файл и попытайтесь вернуть его без предоставления комментария к возвращаемым правкам.
  2. Убедитесь, что возврат изменений приостановлен, потому что не выполнено требование политики возврата.
  3. Добавьте комментарии и завершите возврат правок. С комментарием возврат должен пройти успешно, без вывода на экран уведомления о нарушении политики.

Дополнительные ресурсы

  • Подробнее о том, как настроить политику возврата после правки, читайте в статье "Walkthrough: Customizing Check-in Policies and Notes" по адресу http://msdn2.microsoft.com/en-us/library/ms181281(VS.80).aspx.
  • Чтобы посмотреть пример кода, который запрещает возврат правок с определенными вариантами кодирования, читайте статью "Checkin Policy to Disallow Certain Patterns" по адресу http://blogs.msdn.com/jmanning/ar-chive/2006/02/02/523125.aspx.
  • Чтобы посмотреть пример кода, который обязывает вводить комментарии при возврате после правки, читайте статью "Sample Checkin Policy: Make Sure the Comment Isn't Empty" по адресу http://blogs.msdn.com/ jmanning/archive/2006/01/21/515858.aspx.
  • Чтобы узнать, как зарегистрировать новую политику возврата после правки, читайте статью "I've Made a New Check-In Policy! How Do I Add It?" по адресу http://blogs.msdn.com/jmanning/archive/2006/02/07/526778. aspx.

Как создать дерево кода в Team Foundation Server

Область применения

  • Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) .
  • Microsoft Visual Studio Team System.

Описание

В этой статье подробно разбирается процесс создания в TFS дерева исходного кода. Цель статьи - познакомить вас со всеми этапами создания собственного дерева исходного кода.

Содержание

  • Задачи.
  • Обзор.
  • Порядок операций.
  • Шаг 1 - создание командного проекта.
  • Шаг 2 - создание сопоставления рабочей области.
  • Шаг 3 - создание структуры каталогов в системе управления исходным кодом.
  • Шаг 4 - добавление исходного кода в дерево.
  • Дополнительные ресурсы.

Задачи

  • Научиться создавать командный проект.
  • Научиться создавать сопоставление рабочей области.
  • Научиться создавать дерево исходного кода в системе Team Foundation Server.

Обзор

Чтобы добавить решение в систему управления исходным кодом, достаточно просто щелкнуть его правой кнопкой в Solution Explorer и выбрать команду Add Solution To Source Control. Однако такой вариант не позволяет явно настроить структуру дерева исходного кода в системе управления исходным кодом. Явно описывая структуру каталогов, вы можете организовать исходный код под папками верхнего уровня и использовать отдельные папки верхнего уровня для размещения основного исходного кода и его ответвлений, например, ветвей, используемых при разработке или для обслуживания готовых выпусков.

В данной статье описаны шаги, необходимые для явного создания структуры дерева исходного кода.

Порядок операций

  • Шаг 1 - создание командного проекта.
  • Шаг 2 - создание сопоставления рабочей области.
  • Шаг 3 - создание структуры каталогов в системе управления исходным кодом.
  • Шаг 4 - добавление исходного кода в дерево.

Шаг 1 - создание командного проекта

Для начала мы создадим новый командный проект с настройками по умолчанию.

  1. В Team Explorer щелкните правой кнопкой свой сервер TFS и выберите команду New Team Project.
  2. В диалоговом окне New Team Project ведите имя проекта, например MyTeamProject1, и щелкните Next.
  3. На странице Select a Process Template оставьте значение по умолчанию - MSF for Agile Software Development - v4.0 - и щелкните Next.
  4. На странице Specify the Settings for the Project Portal оставьте предлагаемое имя портала проекта ( MyTeamProject1 ), введите описание портала проекта и щелкните Next.
  5. На странице Specify Source Control Settings оставьте значение по умолчанию Create an empty source control folder, чтобы создать пустую папку системы управления исходным кодом, и щелкните Next.
  6. Щелкните Finish, чтобы создать проект.

На сервере TFS будут созданы новый командный проект с использованием выбранного шаблона процесса и пустая папка для него.

Шаг 2 - создание сопоставления рабочей области

Теперь нужно создать сопоставление рабочей области для описания соответствия между структурой каталогов на сервере TFS и на клиенте. Это необходимо для создания структуры дерева исходного кода. Сначала дерево каталогов создается в вашей рабочей области, затем вы должны передать его на сервер TFS.

>Сопоставление рабочей области можно создать двумя способами:

  • явно задать сопоставление рабочей области;
  • выполнить для своего командного проекта операцию get.

Явное задание сопоставления рабочей области

  1. В меню File Visual Studio выберите команду Source Control и щелкните Workspaces.
  2. В диалоговом окне Manage Workspaces выберите имя своего компьютера и щелкните Edit.
  3. В диалоговом окне Edit Workspace в списке Working folders щелкните Click here to enter a new working folder.
  4. Щелкните многоточие, выберите свой командный проект (например, MyTeamProject1 ) и щелкните OK.
  5. Щелкните ячейку локальной папки, чтобы появилась еще одна кнопка с многоточием.
  6. Щелкните многоточие под Local Folder и выберите локальную папку на компьютере, где вы хотите разместить рабочую область командного проекта, например, C:\DevProjects\MyTeamProject1.
  7. Дважды щелкните OK, чтобы закрыть диалоговое окно Edit Workspace
  8. Щелкните OK в информационном сообщении Microsoft Visual Studio об изменении одной или нескольких рабочих папок.
  9. Щелкните Close, чтобы закрыть диалоговое окно Manage Workspaces.

Выполнение операции Get для командного проекта

  1. В Team Explorer разверните узел командного проекта MyTeamProject1.
  2. Щелкните дважды Source Control.
  3. В Source Control Explorer щелкните правой кнопкой мыши корневую папку MyTeamProject1 и выберите команду Get Latest Version.
  4. В диалоговом окне Browse For Folder выберите нужный локальный путь (например, C:\DevProjects\MyTeamProject1 ) и щелкните OK. Корневая папка командного проекта с TFS будет сопоставлена с локальной папкой на вашем компьютере.

Шаг 3 - создание структуры каталогов в системе управления исходным кодом

На этом этапе исходя из стратегии и требований проекта создается структура каталогов системы управления исходным кодом на сервере. Обычно за основу берется структура /Main/Source, которая позволяет впоследствии создавать на одном уровне с Main ветви Development и Releases. В папке Releases размещаются ветви кода выпущенных версий ПО, для которых вы обеспечиваете поддержку. Папка Development содержит изолированные ветви разработки.

/Main
		/Source
			/MyApp1 					-> Содержит MyApp1.sln
				/Source 				-> Папка-контейнер
/ClassLibrary1 			-> Содержит ClassLibrary1.csproj
/MyApp1Web 			-> Содержит Default.aspx
/UnitTests 				-> Содержит проекты модульных тестов
/ClassLibrary1Tests 		-> Проект тестирования для ClassLibrary1
/MyApp1WebTests 		-> Проект тестирования для MyApp1Web
/Build 					-> Содержит результат сборки (двоичные файлы)
/Docs 					-> Содержит проектную документацию и пр.
/TestCases 				-> Содержит документацию по тестированию
/Development
/FeatureBranch1
/Source
/MyApp1
/Source
/MyApp1Web
/ClassLibrary1
/UnitTests
/ClassLibrary1Tests
/MyApp1WebTests
/FeatureBranch2
/Releases
/Release1
/MyApp1
/Source
/ClassLibrary1
/MyApp1Web
/UnitTests
/ClassLibrary1Tests
/MyApp1WebTests
/Release 1.1
/Release 1.2

Создание структуры каталогов на сервере:

  1. В Team Explorer разверните узел командного проекта MyTeamProject1.
  2. Дважды щелкните Source Control.
  3. В Source Control Explorer выберите корневой узел, щелкните правой кнопкой мыши панель Local Path и выберите команду New Folder.
  4. Введите имя Main и нажмите Enter.
  5. В папке Main создайте папку Source.
  6. Повторите предыдущие шаги, чтобы создать другие корневые папки, например, Development и Releases.
  7. Создав структуру дерева каталогов, щелкните правой кнопкой мыши корневой узел MyTeamProject1 в Source Control Explorer и выберите команду Check-in Pending Changes.
  8. В диалоговом окне Check In - Source Files - Workspace выберите папки, которые необходимо возвратить в систему управления исходным кодом, добавьте комментарий и щелкните Check In. Структура каталогов будет создана локально и добавлена в систему управления исходным кодом TFS.

Шаг 4 - добавление исходного кода в дерево

На этом этапе исходный код копируется с локального диска в дерево каталогов на сервере. В этом примере вы создадите новое веб-приложение и проект библиотеки классов, а затем добавите их в систему управления исходным кодом.

Создание нового файла решения Visual Studio
  1. Выберите в меню File команду New и щелкните Project.
  2. Разверните Other Project Types и выберите Visual Studio Solutions.
  3. На панели Templates выберите Blank Solution.
  4. Введите MyApp1 в поле Name и C:\DevProjects\MyTeamProject1\ Main\Source в поле Location.
  5. Щелкните OK. Visual Studio создаст новое решение и поместит файл решения (.sln) в папку C:\DevProjects\ MyTeamProject1\Main\Source\MyApp1.

Добавление в решение нового веб-сайта

  1. В Solution Explorer щелкните решение правой кнопкой, выберите Add и щелкните New Web Site.
  2. В списке Templates выберите ASP.NET Web Site, задайте File System в качестве Location и C:\DevProjects\MyTeamProject1\Main\Source\ MyApp1\Source\MyApp1Web в качестве пути.
  3. Щелкните OK. Visual Studio создаст веб-сайт.

Добавление в решение нового проекта библиотеки классов

  1. В Solution Explorer щелкните решение правой кнопкой, выберите Add и щелкните New Project.
  2. В списке Project types выберите Visual C#, а в списке Templates выберите Class Library.
  3. Не меняйте предлагаемое по умолчанию имя ClassLibrary1 и задайте в поле Location путь C:\DevProjects\MyTeamProject1\Main\Source\ MyApp1\Source.
  4. Щелкните OK. Visual Studio создаст структуру нового проекта. Теперь локальная структура каталогов должна выглядеть следующим образом:

добавление решения в систему управления исходным кодом

В Solution Explorer щелкните решение правой кнопкой мыши и выберите Add Solution to Source Control. Ваше решение и два проекта будут добавлены в Team Foundation Source Control.

Теперь дерево исходного кода в системе управления исходным кодом должно выглядеть так:


Дополнительные ресурсы

Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже?

Александр Медов
Александр Медов

Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?

Иван Циферблат
Иван Циферблат
Россия, Таганрог, 36, 2000