В этом разделе
Стратегия:
Ветвление
TFSBuild.proj при создании полной ветви.Политики возврата после правки
Непрерывная интеграция
Настройка
MS Build Toolkit Extras для сборки приложений Microsoft .NET 1.1.TFSBuild.proj для изменения параметров сборки.Развертывание
Производительность
Team Build.Проекты
Web Deployment Project для веб-приложений.Сборки по расписанию
Тестирование как основа разработки
Рабочие элементы
Используйте расписание для выполнения сборок на регулярной основе с предсказуемыми интервалами.
Как правило, сборка, выполняемая для группы тестирования и других членов команды, должна производиться безотказно и с фиксированной частотой по времени, чтобы реакция на результаты сборки была своевременной.
Компонент Team Build из комплекта Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) не поддерживает создание сборок по расписанию из пользовательского интерфейса. Однако, чтобы начать сборку в заданное время, вы вольны использовать Microsoft Windows® для запуска утилиты командной строки TFSBuild
Создание сборки по расписанию
TFSBuild:TfsBuild start <<имя сервера сборки>> << командный проект>> << тип сборки>>
Windows, которая будет запускать пакетный файл с нужным интервалом.Дополнительные ресурсы
Team Build вы найдете в лекции 9 этой книги.TFS вы найдете в разделе "Как настроить плановую сборку в Visual Studio Team Foundation Server " этой книги.Используйте непрерывные сборки, чтобы обеспечить оперативное информирование группы разработки о качестве сборки и возможных негативных изменениях после каждого возврата после правки. Это позволит группе разработки быстро устранить проблемы сборки и повысит качество вашего кода.
Хотя Team Foundation Server 2005 не содержит встроенного средства для непрерывной интеграции, в нем есть все необходимое для реализации собственного решения непрерывной сборки.
Дополнительную информацию о настройке непрерывных сборок в TFS вы найдете в разделе "Как настроить непрерывную сборку в Visual Studio Team Foundation Server ", где используется решение, представленное группой разработки Microsoft Visual Studio Team System (VSTS) . Решение устанавливает веб-службу, которая работает от имени учетной записи, имеющей доступ к серверу TFS. Team Foundation Server позволяет при возникновении определенного события отправлять сообщение электронной почты или вызвать веб-службу Механизм событий используется решением непрерывной интеграции для регистрации веб-службы, связанной с событием Checkin-Event. Всякий раз, когда происходит возврат после правки, веб-служба инициирует запуск Team Build.
Дополнительные ресурсы
TFS вы найдете в разделе "Как настроить плановую сборку в Visual Studio Team Foundation Server " этой книги.Выполнение сборки после каждого возврата - самая простая стратегия непрерывной интеграции, которая обычно обеспечивает самую быструю реакцию. Однако, если возврат после правки производится достаточно часто, она приводит к перегрузке сервера сборок. В этом случае вам следует использовать другой подход, при котором сборка производится после определенного числа возвратов после правки или по истечении определенного времени. Чтобы решить, нужно ли вам использовать скользящую сборку, выясните следующее:
Team Build в минутах;Если длительность сборки больше среднего интервала между возвратами после правки, сборки будут выполняться непрерывно: одна сборка еще не будет завершена, когда уже произойдет следующий возврат после правки, инициирующий следующую сборку. Если возвраты после правки производятся до завершения предшествующей сборки, это негативно отражается на производительности сервера сборок и блокирует запуск других сборок (например, сборок по расписанию). Определите промежуток времени, в течение которого возвраты после правки производятся особенно часто, и выясните, будет ли непрерывная интеграция оказывать влияние на сборки по расписанию и другие важные командные сборки.
Дополнительные ресурсы
Чтобы сократить количество сбоев при сборке, используйте ветвь Development для активной разработки и ветвь Main для интеграции.
Ниже приведен пример структуры ветвей после создания ветви Development:
Development - ветвь для разработки.Source.Main - главная ветвь сборки.Source.При работе с ветвлением принимайте во внимание следующие рекомендации:
Main должны предоставляться разработчикам, ответственным за слияние и интеграцию. Всем остальным достаточно доступа только для чтения.Development должна быть доступна всем как для чтения, так и для записи.Main.Development.Main.Development.Используйте ветвь Main для интеграции изменений, произведенных в ветви разработки. Всю активную разработку ведите в ветви Development. В ветвь Main переносите только проверенные изменения.
Дополнительные ресурсы
Чтобы повысить качество возвратов после правки, применяйте сочетание анализа кода и политики тестирования. Например, воспользуйтесь готовой политикой тестирования, чтобы исходный код возвращался в систему управления исходными кодами лишь при условии успешного выполнения определенных тестов. Также вы вольны настроить политику анализа кода, чтобы обеспечить соответствие кода определенным стандартам, и выполнение требований к безопасности, производительности, переносимости,
Применяя политику возврата после правки в сочетании с политиками, устанавливающими стандарты и правила кодирования, вы протестируете код на предмет наличия определенных проблем.
Чтобы настроить политику анализа кода при возврате после правки для командного проекта, щелкните проект правой кнопкой мыши в Team Explorer, выберите Team Project Settings, затем щелкните Source Control. Перейдите на вкладку Check-in Policy, щелкните Add, затем выберите и настройте соответствующую политику.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Чтобы отслеживать процесс сборки, создайте уведомление, которое при завершении сборки будет отправлять вам или кому-нибудь еще сообщение электронной почты.
Это важно, поскольку обеспечивает максимальную оперативность
Дополнительные ресурсы
TFSBuild.proj при создании полной ветви.Создание ветви с подмножеством решений командного проекта может повлечь за собой создание новых типов сборок. Существуют неполные ветви двух типов:
TeamBuildTypes.TeamBuildTypes (типов сборки).Если вы создаете неполную ветвь, не включающую в себя типы командной сборки, все существующие командные сборки сохраняют работоспособ-ностьми, но вам придется создать новые типы командной сборки, чтобы осуществить сборку в ветви. Создавайте новые типы сборки с помощью мастера Team Build Wizard. В новом типе сборки будет указание на новое положение ветви, а также на родительское положение для любых решений, которые должны быть включены в сборку, но при этом не включены в ветвь.
Если вы создадите неполную ветвь, включающую типы командной сборки, скопированные с ветвью типы сборки будут указывать на положение исходной родительской ветви и не позволят собрать новую ветвь. Измените ответвленные типы сборки, чтобы они указывали на новое положение ответвленного кода.
Дополнительные ресурсы
Когда вы создаете новую ветвь, включающую типы командной сборки, пути к типам сборки будут по-прежнему указывать на предыдущее положение. Чтобы сборка работала в новой ветви, вам следует обновить пути к файлам типов сборки проекта: они должны ссылаться на новые пути, созданные после ветвления.
Если создается полная ветвь, при этом также осуществляется ветвление типов сборки. Типы сборки содержат ссылки на папки из первичного дерева управления исходными кодами. Чтобы они ссылались на папки ответвления, отредактируйте ссылки. Извлеките типы сборки из ветви, которую хотите изменить, внесите изменения, а затем верните их в ветвь.
Дополнительные ресурсы
Чтобы повысить качество возвратов после правки, применяйте сочетание анализа кода и политики тестирования. Например, воспользуйтесь готовой политикой тестирования, чтобы исходный код возвращался в систему управления исходными кодами лишь при условии успешного выполнения определенных тестов. Также вы вольны настроить политику анализа кода, чтобы обеспечить соответствие кода определенным стандартам, и выполнение требований к безопасности, производительности, переносимости,
Применяя политику возврата после правки в сочетании с политиками, устанавливающими стандарты и правила кодирования, вы протестируете код на предмет наличия определенных проблем.
Дополнительные ресурсы
Существует политика возврата после правки, которая вынуждает разработчиков связывать возврат после правки с рабочим элементом.
Если при сборке произошел сбой, важно знать, какие наборы изменений связаны с данной сборкой и какие рабочие элементы связаны с этими наборами. Имея такие сведения, вы определите разработчика, ответственного за внесение измененного кода, и область проекта, в которой он работает.
Чтобы сборку можно было связать с набором завершенных рабочих элементов, каждый возврат после правки должен быть связан с рабочим элементом. Возвраты после правки представляют собой наборы изменений, связанных со сборкой, благодаря чему возможно перейти от сборки к набору изменений и соответствующему рабочему элементу.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Используйте непрерывные сборки, чтобы обеспечить оперативное информирование группы разработки о качестве сборки и возможных негативных изменениях после каждого возврата после правки. Это позволит группе разработки быстро устранить проблемы сборки и повысит качество вашего кода.
Хотя Team Foundation Server 2005 не содержит встроенного средства для непрерывной интеграции, в нем есть все необходимое для реализации собственного решения непрерывной сборки.
Дополнительную информацию о настройке непрерывных сборок в TFS вы найдете в разделе "Как настроить непрерывную сборку в Visual Studio Team Foundation Server ", где используется решение, представленное группой разработки Microsoft Visual Studio Team System (VSTS) . Решение устанавливает веб-службу, которая работает от имени учетной записи, имеющей доступ к серверу TFS. Team Foundation Server позволяет при возникновении определенного события отправлять сообщение электронной почты или вызвать веб-службу Механизм событий используется решением непрерывной интеграции для регистрации веб-службы, связанной с событием Checkin Event. Всякий раз, когда происходит возврат после правки, веб-служба инициирует запуск Team Build.
Дополнительные ресурсы
TFS вы найдете в разделе "Как настроить плановую сборку в Visual Studio Team Foundation Server " этой книги.Выполнение сборки после каждого возврата - самая простая стратегия непрерывной интеграции, которая обычно обеспечивает самую быструю реакцию. Однако, если возврат после правки производится достаточно часто, она приводит к перегрузке сервера сборок. В этом случае вам следует использовать другой подход, при котором сборка производится после определенного числа возвратов после правки или по истечении определенного времени. Чтобы решить, нужно ли вам использовать скользящую сборку, выясните следующее:
Team Build в минутах;Если длительность сборки больше среднего интервала между возвратами после правки, сборки будут выполняться непрерывно: одна сборка еще не будет завершена, когда уже произойдет следующий возврат после правки, инициирующий следующую сборку. Если возвраты после правки производятся до завершения предшествующей сборки, это негативно отражается на производительности сервера сборок и заблокирует запуск других сборок (например, сборок по расписанию). Определите промежуток времени, в течение которого возвраты после правки производятся особенно часто, и выясните, будет ли непрерывная интеграция оказывать влияние на сборки по расписанию и другие важные командные сборки.
Дополнительные ресурсы
Важно определить интервал скользящей сборки, чтобы обеспечить эффективность процесса. Если интервал между сборками превышает время, за которое выполняется одна сборка, в промежутках между скользящими сборками сервер будет доступен для сборок других типов.
Чтобы определить идеальный интервал времени скользящей сборки, разделите среднюю частоту возвратов после правки на длительность сборки. Например, если сборка занимает 10 минут, а возвраты после правки происходят в среднем раз в 5 минут, можно задать выполнение сборки после двух возвратов после правки, а для времени ожидания выбрать значение 10 минут. Это гарантирует завершение одной сборки до начала следующей. Если нагрузка на сервер сборки возросла, увеличьте эти значения.
Дополнительные ресурсы
MS Build Toolkit Extras для сборки приложений Microsoft .NET 1.1.TFSBuild.proj для изменения параметров сборки.Поскольку Team Build по умолчанию не поддерживает проекты установки, для компиляции проекта установщика и копирования исполняемых файлов в общее место накопления вам следует использовать пользовательский послесборочный шаг.
Дополнительные ресурсы
Team Build по умолчанию не поддерживает приложения .NET 1.1. Производить сборки .NET 1.1 позволяет пакет MSBuild Extras - Toolkit for .NET 1.1 (MSBee) , но при этом потребуется обновление проектов и решений до Visual Studio 2005. Если это невозможно, используйте для компиляции приложений .NET 1.1 пользовательский послесборочный шаг.
Дополнительные ресурсы
Чтобы изменить параметры сборки, например, сервер сборки, место накопления или папку сборки, отредактируйте файл TFSBuild.proj.
В файле TFSBuild.proj содержится множество сведений, необходимых для работы Team Build. Здесь, в частности, задается, должны ли при сборке выполняться статический анализ кода и модульные тесты. Чтобы изменить параметры сборки, отредактируйте файл TFSBuild.proj.
Редактирование файла TFSBuild.proj
При следующем выполнении сборки будет использован файл с внесенными изменениями.
Дополнительные ресурсы
Team Build не поддерживает сборку решений, охватывающих несколько командных проектов. Чтобы выполнить такую сборку, вам следует настроить файл TFSBuild.proj на извлечение для правки кода из других проектов, от которого зависит ваша сборка.
Дополнительные ресурсы
Большие командные сборки могут длиться продолжительное время и занимать значительные ресурсы сервера. Если вы выполняете сборки на командном сервере TFS, это отражается на его надежности, производительности и масштабируемости. Для повышения производительности сборки и снижения нагрузки на уровень приложений рекомендуется выполнять сборки на выделенном сервере.
Дополнительные ресурсы
Team Build.По умолчанию перед извлечением дерева исходного кода, необходимого для сборки, Team Build очищает папку, используемую для выполнения сборки. Кроме того, Team Build удаляет и повторно инициализирует рабочую область, используемую для извлечения исходного кода. Если объем исходного кода, необходимого для сборки, достаточно велик и сервер сборки установлен отдельно от TFS -сервера, извлечение исходного кода может занять много времени. Чтобы повысить производительность, настройте Team Build так, чтобы извлекался только тот исходный код, который изменился с момента последней сборки. Для этого вам потребуется установить несколько значений в файле TFSBuild.proj:
Team Build локальной папки сборки и папки исходных кодов;Team Build рабочей области, используемой при сборке;Team Build на получение из системы управления исходным кодом только изменившихся исходных кодов.Выполнение инкрементной сборки
TFSBuild.proj, связанный со вновь созданным типом инкрементной сборки.TFSBuild.proj следующий раздел перед закрывающим элементом </project> :<PropertyGroup> <SkipClean>true</SkipClean> <SkipInitializeWorkspace>true</SkipInitializeWorkspace> <ForceGet>false</ForceGet> </ PropertyGroup>
Эти настройки приводят к следующим результатам:
SkipClean Значение true этого параметра гарантирует, что локальные папки сборки и исходных кодов не будут очищаться при сборке.SkipInitializeWorkspace Значение true этого параметра означает, что сборка на затронет текущую рабочую область для компьютера сборки.ForceGet Присвоение значения false этому параметру приводит к тому, что при сборке будут извлекаться не все исходные коды рабочей области, а только измененные коды.Дополнительные ресурсы
Team Build " этой книги.Вам следует сократить масштаб сопоставления рабочей области или скрыть папки, которые не нужны при сборке.
Когда вы запускаете Team Build, сервер получает все необходимые ему файлы из системы управления исходным кодом. Список получаемых файлов определяется рабочей областью, которая используется для создания типа командной сборки. Но некоторые файлы, сопоставленные в рабочей области, на самом деле могут быть не нужны. Измените определение рабочей области, чтобы сократить число включаемых папок или скрыть ненужные файлы, чтобы они не извлекались как часть сборки.
Например, по умолчанию новый проект сопоставляется с папкой $/Team-Project. Если все файлы исходных кодов находятся в папке $/TeamProject/ foo/bar/foobar/sources, вам следует сопоставлять только эту папку.
Чтобы WorkspaceMapping.xml, формируемый при создании типа командной сборки и применяемый для определения папок, которые извлекаются при выполнении сборки. Скрывать можно как файлы, так и папки, но предпочтительнее скрывать папки, поскольку сокрытие отдельных файлов может привести к излишним накладным расходам.
Сокрытие папки
WorkspaceMapping.xml.WorkspaceMapping.xml в систему управления исходным кодом.В следующем примере показано, как отменить извлечение из системы управления исходным кодом папки с документацией:
<Mappings> <InternalMapping ServerItem="$/MyTeamProject" LocalItem="c:\projects\ teamproject" Type="Map" /> <InternalMapping ServerItem="$/MyTeamProject/documentation" Type="Cloak" /> </Mappings>
Дополнительные ресурсы
Выполняя сборку, Team Build извлекает исходные коды из системы управления. Если дерево исходных кодов проекта велико, извлечение исходных кодов может оказаться длительным процессом. Если вы собираете только часть проекта, убедитесь, что извлекаются только необходимые файлы.
Большой командный проект, как правило, содержит несколько решений Visual Studio, каждое из которых используется для сборки отдельных частей проекта. Создавая тип командной сборки, вы указываете решение, которое будет использоваться при сборке. Если вы зададите файл решения без указания рабочей области, перед выполнением сборки Team Build извлечет все исходные коды командного проекта.
Чтобы извлечь только необходимые коды, сначала определите рабочую область и создайте в ней сопоставление только для того решения, которое хотите собрать. Затем определите тип командной сборки, выберите определенную вами рабочую область и укажите решение. При таком подходе извлечены будут только исходные коды, определенные в этой рабочей области.
Дополнительные ресурсы
Если сборки несколько типов выполняются на единственном сервере, он может оказаться перегружен. В такой ситуации вам следует подумать о выполнении различных типов сборки на различных серверах.
Сборка может занимать продолжительное время, особенно в больших проектах. Если вы используете непрерывную интеграцию или частые сборки по расписанию, сервер может не справиться с объемом производимых работ.
Для распределения нагрузки установите несколько серверов сборки на различные компьютеры. Назначьте для каждого сервера различные типы сборки, чтобы сбалансировать нагрузку.
Дополнительные ресурсы
Web Deployment Project для веб-приложений.Вообще говоря, следует избегать перекрестных зависимостей между командными проектами. Старайтесь сохранять все связанные и зависимые решения и проекты в одном командном проекте. Это сократит необходимость настройки сценария сборки. Если у вас есть зависимость, используйте ссылки проекта для ее определения или создайте ветвь из общего проекта в ваш проект. Избегайте файловых ссылок, поскольку ими намного труднее управлять.
Дополнительные ресурсы
Чтобы сослаться на другой файл сборки .NET в том же решении Visual Studio, используйте ссылку на проект Visual Studio. Используя ссылки на проект, вы даете Visual Studio возможность выполнять некоторые вещи автоматически, например, синхронизировать конфигурацию сборки ( debug или release ), отслеживать версии, при необходимости повторно собирать компоненты в случае изменения версии файла сборки .NET.
Дополнительные ресурсы
Проекты веб-развертывания связываются с проектами Visual Studio Web Site или Web Application. Они позволяют управлять настройками сборки, а также множеством других настроек, общих для веб-приложений ASP.NET Например, проекты развертывания предоставляют удобный доступ к файлу Web.config, строкам соединения, виртуальным папкам, а также позволяют с легкостью развертывать скомпилированные веб-приложения на сервере хостинга.
Дополнительные ресурсы
Если вы работаете в небольшой группе, вам стоит использовать стратегию единого решения Visual Studio, содержащего все проекты. Эта структура упрощает разработку, поскольку при открытии решения сразу доступен весь код. При такой стратегии также легко устанавливать ссылки, поскольку все они связывают проекты одного решения. Вы вольны использовать и файловые ссылки, чтобы ссылаться на сборки сторонних производителей, например, приобретенные компоненты, которые находятся вне вашего решения.
Дополнительные ресурсы
Если вы работаете в большой группе, вам выгодно использовать несколько решений, каждое из которых представляет определенную подсистему приложения. Разработчики будут применять эти решения для работы над мелкими частями системы без необходимости загрузки всего кода по всем проектам. Проектируйте структуру решения так, чтобы любые проекты, связанные зависимостями, группировались вместе. Это позволит вам использовать ссылки на проекты вместо ссылок на файлы. Подумайте о создании главного решения, которое содержало бы все проекты, для сборки всего приложения.
Примечание Если вы осуществляете сборку при помощи Team Build (на основе MSBuild ), можете создавать решения, не включающие в себя все связанные проекты. При условии что сначала вы сбираете решение целиком, генерируя двоичный файл для каждого решения, MSBuild сможет проследовать по ссылкам в проекты вне решения и произвести успешную сборку. Решения, создаваемые таким образом, не будут собираться при помощи команды сборки из Visual Studio. Они будут работать только с Team Build и MSBuild.
Дополнительные ресурсы
Работая над очень большим решением, для которого требуется несколько десятков проектов, вы рискуете столкнуться с ограничениями масштабируемости. Если это случилось, разбейте приложение на несколько решений, но не создавайте главное решение для всего приложения. Все ссылки внутри каждого решения будут ссылками на проекты. Ссылки на проекты вне решения (например, на библиотеки сторонних разработчиков в другом решении) будут ссылками на файлы. Это означает, что главного решения быть не может. Вместо этого нужно использовать сценарий, в котором учтен порядок сборки решений. Одной из задач обслуживания структуры из нескольких решений является контроль за тем, чтобы разработчики по невнимательности не создали кольцевых ссылок между решениями. Такая структура требует создания сложного сценария сборки и явного сопоставления отношений зависимости. Собрать приложение во всей его полноте из Visual Studio невозможно. Вместо этого вам придется использовать TFS Team Build или непосредственно MSBuild.
Дополнительные ресурсы
Используйте расписание для выполнения сборок на регулярной основе с предсказуемыми интервалами.
Как правило, сборка, выполняемая для группы тестирования и других членов команды, должна производиться безотказно и с фиксированной частотой по времени, чтобы реакция на результаты сборки была своевременной.
Компонент Team Build из комплекта Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) не поддерживает создание сборок по расписанию из пользовательского интерфейса. Однако, чтобы начать сборку в заданное время, вы вольны использовать Microsoft Windows® для запуска утилиты командной строки TFSBuild.
Создание сборки по расписанию
TFSBuild:TfsBuild start <<имя сервера сборки>> << командный проект>> << тип сборки>>
Windows, которая будет запускать пакетный файл с нужным интервалом.Дополнительные ресурсы
Team Build вы найдете в лекции 9 этой книги.TFS вы найдете в разделе "Как настроить плановую сборку в Visual Studio Team Foundation Server " этой книги.Для повышения качества сборки используйте анализ кода. Настройте политику анализа кода, чтобы гарантировать его соответствие определенным стандартам и правилам безопасности, производительности, переносимости,
Чтобы включить анализ кода для типа сборки, установите флажок в мастере Team Build Type при создании нового типа командной сборки или отредактируйте файл TFSBuild.proj для существующего типа командной сборки.
Включение анализа кода в файле TFSBuild.proj
<RunCodeAnalysis> на Always.
<RunCodeAnalysis> на Default.Дополнительные ресурсы
Team Build " этой книги.Выполняйте автоматизированные тесты после каждой сборки, чтобы оперативно получать сведения о ее качестве. Чтобы создать список тестов, связанных со сборкой, необходимо установить Visual Studio Test Edition или Visual Studio Team Suite. Чтобы выполнять автоматизированные тесты на сервере сборки, на нем нужно установить Visual Studio Developer Edition, Visual Studio Test Edition или Visual Studio Team Suite.
Автоматизированные тесты как часть сборки Team Build
Test Manager создайте список тестов.Test Manager заполните новый список тестов, перетаскивая в него тесты из Test View.Дополнительные ресурсы
Когда сборка завершается неудачно из-за ошибок компиляции, для отслеживания ошибки создается рабочий элемент, а сама сборка помечается как неудачная. Однако сборка не считается неудачной, если не удается пройти автоматизированные тесты. Ошибка теста преобразуется в предупреждение, а сборка продолжается.
Иногда нужно, чтобы сборка считалась неудачной, если автоматизированные тесты завершаются с ошибкой. Также может понадобиться, чтобы для отслеживания неудачного выполнения теста автоматически создавался рабочий элемент.
Настройка сбоя сборки при завершении теста с ошибкой
Microsoft.TeamFoundation.Build.targets из папки Program Files\MSBuild\Microsoft\VisualStudio\v8.0\TeamBuild.TFSBuild.proj для типа командной сборки, который хотите считать неудачным при завершении теста с ошибкой.RunTestWithConfiguration из файла Microsoft.Team-Foundation.Build.targets в конец файла TFSBuild.proj перед закрывающим тегом </Project> .Измените атрибут ContinueOnError с true на false.
Примечание Вам доступны две задачи тестирования. Измените задачу серверной сборки, чтобы изменить поведение сборок только на сервере сборки. Задача клиентской сборки используется при выполнении сборки на компьютере разработчика.
Если вы хотите создать рабочий элемент при неудачном завершении сборки, измените RunTestWithConfiguration, добавив элемент OnError перед закрывающим тегом </Target> элемента OnError:
<OnError ExecuteTargets="CreateWorkItem;">
Если вы хотите, чтобы сборка всегда считалась неудачной при завершении теста с ошибкой, измените непосредственно Microsoft.TeamFoundation. Build.targets. Это повлияет на поведение всех типов командной сборки.
Рекомендованное выше решение легко реализуется, но нет гарантии, что оно будет работать в будущих версиях .
Дополнительные ресурсы
Если работа Team Build завершается с ошибкой, для отслеживания этой ошибки автоматически создается рабочий элемент. По умолчанию ему назначен статус "Active", а заголовок информирует о том, что произошла ошибка сборки. Вы должны назначить этот рабочий элемент ответственному разработчику или руководителю сборки, чтобы исправить ошибку и разрешить проблему.
Задача сборки в TFSBuild.proj, определяющая этот рабочий элемент, выглядит следующим образом:
<!-Создание рабочего элемента для сбоя сборки -->
<CreateNewWorkItem BuildId="$(BuildNumber)" Description="$(WorkItemDescription)"
TeamProject="$(TeamProject)"
TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
Title="$(WorkItemTitle)" WorkItemFieldValues="$(WorkItemFieldValues)"
WorkItemType="$(WorkItemType)" ContinueOnError="true" />
Чтобы настроить созданный рабочий элемент по себя (например, назначить определенного разработчика, установить степень серьезности или приоритет), измените поле WorkItemFieldValues.
Дополнительные ресурсы
В этом разделе
Области и итерации
Политики возврата после правки
Шаблоны процесса
MSF Agile в несложных проектах, допускающих неформальный подход.MSF CMMI в проектах, требующих более формального подхода или соответствия стандартам CMMI.Группы безопасности и разрешения
Командные проекты
Рабочие элементы
QoS.Microsoft Excel для массового редактирования рабочих элементов.Используйте области ( area ) командного проекта для упорядочения задач, ошибок, требований и других рабочих элементов. Разрешения для областей позволяют ограничить доступ к различным частям командного проекта.
Области применяются для представления логических или физических компонентов, а подобласти ( sub-area ) представляют отдельные функции. Такая структура помогает упорядочить рабочие элементы и упрощает отслеживание работ по компоненту или функции.
Создание области проекта
Team Explorer.Team раскройте подменю Team Project Settings и выберите команду Areas and Iterations.Areas and Iterations перейдите на вкладку Area.Add a child node на панели инструментов.Rename и введите нужное имя.Area.Остерегайтесь создания слишком сложной структуры. Области позволяют назначать разные разрешения на доступ к рабочим элементам, однако управление этими разрешениями в сложных деревьях связано с дополнительными расходами. Кроме того, сложную структуру с разветвленными разрешениями сложнее копировать в другие командные проекты.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Используйте итерации, чтобы определить, сколько раз в ходе разработки приложения команда будет повторять определенный набор масштабных действий (планирование, выполнение или тестирование). Этот набор должен представлять веху проекта, имеющую четкий критерий завершения, например, готовность функции или компонента.
Создание итерации
Team Explorer.Team раскройте подменю Team Project Settings и выберите команду Areas and Iterations.Areas and Iterations перейдите на вкладку Iteration.Add a child node на панели инструментов.Rename и введите имя.Iteration.Close.Примечание В шаблон процесса MS Agile включено три предопределенных итерации. Вы можете удалить эти итерации, переименовать их или оставить неизменными.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Создайте отдельную итерацию для сценариев и задач, которые до этих пор не были назначены ни одной итерации. Это позволит при планировании итераций легко распознать незавершенные сценарии и задачи.
Создание отдельной итерации
Team Explorer.Team раскройте подменю Team Project Settings и выберите команду Areas and Iterations.Areas and Iterations перейдите на вкладку Iteration.Add a child node на панели инструментов.Close.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.В процессе настройки командного проекта определите продолжительность цикла итерации, исходя из размера и сложности проекта. Учитывайте следующие ключевые моменты:
На практике в большинстве командных проектов работает двухнедельный цикл итерации.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Политики возврата после правки
Сочетая политики анализа и тестирования, вы обеспечите соблюдение стандартов качества кода. Например, встроенная в VSTS политика тестирования обеспечит обязательное проведение специальных тестов перед возвратом кода в системе управления исходным кодом Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) . Также можно настроить политику анализа кода, обеспечив с ее помощью соответствие кода определенным нормам безопасности, производительности, переносимости,
Применяя этот тип политики возврата после правки в дополнение к политикам, направленным на укрепление стандартов и нормативов программирования, вы гарантируете соответствие кода специфическим критериям качества.
Применение анализа кода в командном проекте
Team Explorer щелкните правой кнопкой нужный командный проект, раскройте подменю Team Project Settings и выберите команду Source Control.Check-in Policy, щелкните кнопку Add, а затем выберите и настройте соответствующую политику.Дополнительные ресурсы
Visual StudioTeam Foundation Server " этой книги.Используйте новую стандартную политику возврата после правки Work Item, чтобы заставить разработчиков связывать с возвратом рабочие элементы. В случае ошибки сборки важно уметь определить связь между сборкой, набором изменений, внесенными в исходный код, и рабочими элементами, входящими в этот набор. Это позволяет установить разработчика, ответственного за редактирование данного кода и область проекта, в которой он работает.
Настройка политики Work Items
Team Explorer правой кнопкой мыши щелкните нужный командный проект, раскройте подменю Team Project Settings и выберите команду Source Control.Check-in Policy.Add, а затем выделите и настройте политику Work Item.Дополнительные ресурсы
Проект, над которым вы работаете, может требовать соблюдения определенных стандартов программирования, не охватываемых статическим анализом кода и существующими политиками возврата после правки. Например, в проекте может требоваться полное отсутствие в коде символов табуляции или обязательное добавление комментария при возврате кода. В подобных случаях создавайте новые политики возврата.
Применение политики для соблюдения стандартов программирования
Team Explorer правой кнопкой мыши щелкните нужный командный проект, раскройте подменю Team Project Settings и щелкните команду Source Control.Check-in Policy и щелкните кнопку Add.Add Check-in Policy установите параметр Code Analysis и щелкните OK.Code Analysis Policy Editor задайте параметр Enforce C/C++ Code Analysis (/analyze), Enforce Code Analysis For Managed Code или оба, если ваш проект содержит сочетание управляемого и неуправляемого кода.API, или написать политику для соблюдения стиля программирования, принятого в вашей команде, задав, например, как расставлять фигурные скобки в исходном коде.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Система управления версиями Team Foundation Server не запрещает перекрывать политики возврата после правки. Однако вы можете выполнить следующие действия, чтобы при помощи службы Team Foundation Server из Team Foundation Core Services API выявить факт перекрытия политики: напишите метод Notify, проводящий разбор свойств набора изменений и реагирующий на факт перекрытия. Можно также обнаружить перекрытие политики, просмотрев историю набора изменений вручную.
Дополнительная информация
MSF Agile в несложных проектах, допускающих неформальный подход.MSF CMMI в проектах, требующих более формального подхода или соответствия стандартам CMMI.Используя методику разработки через тестирование ( Test-Driven Development, TDD ) или другие гибкие методики, работайте с шаблоном процесса MSF for Agile Software Development (MSF Agile) . Он представляет собой облегченный подход к гибким проектам разработки ПО. Его следует использовать, если вы не слишком нуждаетесь в дополнительных функциях усовершенствования процесса из шаблона MSF CMMI.
Шаблон процесса MSF Agile легко редактировать, изменяя его в соответствии с требованиями вашего процесса.
Дополнительные ресурсы
MSF Agile вы найдете в лекции 13 этой книги.Visual Studio Team Foundation Server " этой книги.При использовании более формального подхода к разработке ПО, направленного на усовершенствование существующего процесса, применяйте шаблон процесса MSF для CMMI Software Development. Его также можно изменить в соответствии с требованиями вашего процесса.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Многим командам не требуется поддержка всех разделов стандартного командного проекта. Например, многие команды довольствуются системой управления исходным кодом и не собираются использовать портал Microsoft Office SharePoint®. В подобных случаях шаблоны командных проектов можно изменять, удаляя ненужные разделы. В шаблоне всегда должны присутствовать разделы Group Permissions и , от остальных же можно смело избавляться.
Чтобы создать минимальный шаблон, при помощи диспетчера Process Template Manager загрузите шаблон на локальный компьютер, отредактируйте его, удалив ненужные разделы, а затем выгрузите шаблон обратно на сервер.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Проект, над которым вы работаете, может не соответствовать стандартным шаблонам процесса, поставляющимся с Microsoft Visual Studio Team System (VSTS) . Вам может понадобиться другой тип рабочего элемента или иная методология процесса. В таком случае вам следует отредактировать существующий шаблон процесса. Выберите шаблон, максимально близкий к вашим требованиям, и измените его в соответствии с этими требованиями. Как правило, настройке подлежат следующие области шаблона:
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Когда вы создаете новый проект в Team Foundation Server, независимо от выбранного шаблона в нем создается четыре стандартные группы. По умолчанию каждая из этих групп обладает набором определенных разрешений, которые ограничивают полномочия членов этих групп. Четыре стандартные группы таковы:
Project Administrator - администратор проекта;Contributor - участник проекта;Reader - читатель;Build Services - службы сборки.Чтобы обеспечить выполнение специфических требований вашей организации, создайте собственные группы безопасности. Это эффективный способ предоставления группе пользователей конкретного набора разрешений. Убедитесь, что вы предоставляете группе лишь необходимый минимум разрешений, добавляйте в нее только тех пользователей или их группы, которым нужны эти разрешения.
Руководствуйтесь следующими соображениями:
AD только на уровне сервера;TFS, а не группы AD ;Дополнительные ресурсы
Определите членов команды, которые будут заняты в проекте, и их роли. Распределите членов команды по группам TFS, группам уровня сервера и группам безопасности. Помните, что в группу безопасности следует добавлять только тех участников, которые действительно нуждаются в разрешениях, предоставляемых данной группой.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Если вы намерены переносить из версии в версию не только исходный код, но и рабочие элементы, а также другие объекты TFS, используйте один командный проект на все приложение. Все папки TFS при этом будут автоматически переноситься на следующий выпуск. Когда все будет готово к выпуску новой версии, вы сможете создать для ее изоляции ветвь внутри проекта.
Используя один проект на все приложение, помните о следующих ключевых моментах:
TFS. К тому же, вы рискуете выйти за пределы масштабируемости.Дополнительные ресурсы
Если вы готовы с каждым выпуском начинать все заново, не перенося рабочие элементы и другие папки TFS, создавайте отдельный проект на каждый выпуск. Это позволит вам изменять схемы рабочих элементов, последовательность операций, политики возврата после правки и прочие элементы, не затрагивая при этом предыдущий выпуск. Это особенно полезно, если он будет сопровождаться отдельной командой, например, группой поддержки, порядок работы которой может отличаться от основной команды разработчиков.
Используя новый проект для каждого выпуска, помните о следующих ключевых моментах:
TFS из одного проекта в другой нелегко. Рабочие элементы можно копировать в другой проект только по одному. Если вы хотите копировать наборы рабочих элементов, вам придется написать собственную утилиту.TFS и выйдете за пределы масштабируемости.Team Foundation Server способна вместить около 500 проектов на основе шаблона процесса MSF Agile или до 250 проектов на основе шаблона MSF CMMI. Если вы создаете собственный процесс или настраиваете существующий, помните, на масштабируемость сервера наибольшее влияние оказывает схема рабочих элементов. Чем сложнее схема, там меньше проектов сможет поддерживать сервер.Дополнительные ресурсы
Создавая командные проекты, проанализируйте стандартные группы безопасности, созданные процессом, и при необходимости создайте собственные группы с соответствующими разрешениями. Добавьте участников проекта в соответствующие группы, внимательно следя за тем, чтобы каждый из них получал разрешения на доступ только к тем ресурсам, которые ему нужны.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Создавая структуру дерева исходного кода, убедитесь, что она поддерживает ветвление. Создайте отдельные папки для кода и для других ресурсов проекта. Если в будущем потребуется изолированная разработка, вы с легкостью выполните ветвление папки исходного кода. Убедитесь в наличии отдельных папок для каждого компонента внутри папки исходного кода, что позволит при необходимости выполнять частичное ветвление.
Разделяйте с помощью папок прочие категории объектов, например, модульные тесты, зависимости библиотек и т.п. Это позволит при ветвлении включать или исключать их по мере надобности.
Ниже приведен пример дерева исходного кода с поддержкой ветвления: Main - контейнер, содержащий все объекты, необходимые для отправки проекта заказчику.
Source - контейнер, содержащий все объекты, необходимые для выполнения сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, используемого совместно с другими проектами.Unit Tests - контейнер для модульных тестов.Lib - контейнер для двоичных зависимостей.Docs - контейнер для документации, поставляющейся с проектом.Installer - контейнер для исходного кода и двоичных файлов программы установки.Builds - контейнер для сценариев Team Build.Tests - контейнер с результатами тестов, проводимых тестовой командой.Дополнительные ресурсы
QoS.Microsoft Excel для массового редактирования рабочих элементов.Создавайте и записывайте сценарии проекта в начале работы над ним. Это позволит вам составить полную картину проекта и в дальнейшем поможет отслеживать продвижение к намеченной цели. В ходе разработки вы вольны модифицировать существующие сценарии или добавлять новые согласно накопленной информации.
Создание сценариев в начале проекта
project back log, PBL ), который содержит требования, выдвинутые различными заинтересованными сторонами (заказчиками, бизнес-аналитиками, конечными пользователями и руководителями производства) и определите область действия сценариев вашего проекта.Team Explorer разверните узел проекта, щелкните правой кнопкой папку Work Items, раскройте подменю Add Work Item и выберите команду Scenario .New Scenario введите описание сценария. Убедитесь, что для параметра Iteration задано значение 999.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Определите требования QoS для каждого сценария, над которым будет вестись работа в цикле итерации. Это поможет определить критерий приемки сценария. Требования к QoS основываются на целях и требованиях проекта, а также на документах спецификации, если таковые имеются.
Определение требований QoS
Work Items вашего проекта, раскройте подменю Add Work Item и выберите команду Quality of Service Requirements.New Quality of Service Requirements введите следующие сведения:Type - производительность, масштабируемость, нагрузка или безопасность.Iteration укажите текущий цикл итерации.Links свяжите QoS с отдельным сценарием, чтобы облегчить отслеживание.QoS.QoS для каждого уровня или типа требования. Помните, что у каждого сценария может быть несколько требований QoS.QoS для всех сценариев, вызывающихся во время отдельного цикла итерации.Важно! Позже вы сможете разбить требования QoS на тестовые задачи.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Планируя итерации, разделяйте сценарии на блоки, а блоки - на задачи. Убедитесь, что создаваемые задачи ограничены и управляемы. Задача не должна длиться более одного-двух дней. Если продолжительность задачи превышает два дня, ее следует разбить на меньшие подзадачи. Это положительно сказывается на гибкости расписания и управляемости проекта.
Разделение сценариев на управляемые задачи
TFS в качестве рабочих элементов, выполнив следующие действия:Team Explorer щелкните правой кнопкой папку Work Items в узле вашего проекта, раскройте подменю Add Work Item и выберите команду Task.New Task укажите следующие сведения:Discipline присвойте значение Development.Iteration присвойте номер текущего цикла итерации.Links свяжите задачу с конкретным сценарием для облегчения отслеживания. Здесь же можно ввести критерий завершения задачи.Assigned to укажите разработчика, работающего над задачей.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Определив задачи разработки, включите в них критерии приемки, позволяющие разработчику принять решение о завершении задачи. В зависимости от используемого шаблона процесса критерий можно реализовать двумя различными способами:
MSF Agile При использовании MSF Agile без формального требования типа рабочего элемента, проще всего включить критерий приемки в сам рабочий элемент в виде текста. Создайте маркированный список и по мере надобности добавляйте в него новые сведения.MSF CMMI Этот шаблон позволяет задействовать для определения критериев приемки задачи формальные требования. Первым шагом является определение требований. Далее создается задача для их реализации. Между задачей и требованиями устанавливается связь, которая повышает возможности отслеживания и позволяет разработчику проверять результаты работы на соответствие требованиям.Критерий приемки чаще всего определяется как требование к интерфейсу в виде мини-сценария или требования QoS. После успешного прохождения приемки разработчик помечает задачу как завершенную и переходит к следующей.
Дополнительные ресурсы
Создавая новые рабочие элементы (задачи, ошибки, проблемы или требования QoS ), не забывайте связывать их со сценариями, которые привели к их появлению. Это гарантирует, что в основе каждого рабочего элемента лежит конкретный сценарий, и помогает контролировать работу над сценарием в ходе итераций.
Связывание задач, ошибок, проблем и требований QoS со сценариями
New work item перейдите на вкладку Links и щелкните кнопку Add.Add Link в разделе Link Type выберите вариант Scenario .Browse, чтобы найти сценарии в командном проекте.OK.Comment введите комментарий, поясняющий связь сценария с рабочим элементом. Поле Description заполняется автоматически.OK.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Система Team Foundation Server не поддерживает массового редактирования рабочих элементов. Вам приходится редактировать каждый элемент индивидуально. Если вам все-таки нужно отредактировать много рабочих элементов за короткое время, например, за время совещания, вам поможет Microsoft Office Excel®. Экспортируйте рабочие элементы из TFS в Excel, модифицируйте, а затем снова импортируйте в TFS для сохранения правок.
Создание списка рабочих элементов в Excel с последующим редактированием
Microsoft Office Excel и выберите в меню Team команду New List.Connect to a Team Foundation Server укажите сервер, к которому следует выполнить подключение, или щелкните Servers и введите информацию о сервере.Team Projects выберите на сервере Team Foundation Server командный проект, с которым хотите работать. Документ будет связан с этим командным проектом.OK.Query List, а затем укажите запрос в раскрывающемся списке Select a Query.Publish в меню Team.Дополнительные ресурсы
В этом разделе
Администрирование
Создание и настройка
Просмотр
Если вы хотите, чтобы у пользователя была возможность разворачивать отчеты, убедитесь, что он включен в роль сервера отчетов. Эта роль предопределена в Report Services и предназначена для пользователей, осуществляющих развертывание и управление отчетами и подключениями к источникам данных на веб-сервере. Чтобы пользователь мог разворачивать отчеты на сервере отчетов системы Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) , он должен быть членом этой роли.
Team Explorer щелкните правой кнопкой папку Reports вашего командного проекта и выберите Show Report Site.Properties.Security.New Role Assignment.Group or user name введите имя пользователя или группы, которую хотите добавить в роль Content Manager .Content Manager .OK.Панель отчетов позволит вам и вашей команде получить на одной странице доступ ко всей важной информации о проекте. Стандартная страница портала Microsoft Office SharePoint® шаблона Microsoft Solution Framework (MSF) для проектов MSF Agile содержит один отчет и ссылки на остальные. Чтобы создать единое хранилище для информации по проекту, измените страницу портала проектов MS Agile или MSF CMMI, чтобы она включала столько отчетов, сколько вам нужно.
Функциональная панель отчетов должна, вероятно, включать следующие отчеты:
Вы вольны добавлять новые отчеты на страницу портала SharePoint. Для этого в каждый отчет, который вы хотите отобразить на странице, нужно добавить компонент Report Viewer Web Part.
Report Viewer Web Part на сервер отчетов. Для этого используются инструмент stsadm.exe и файл RSWebParts.cab, которые входят в дистрибутив Microsoft Office SharePoint и Report Services, например:
STSADM.EXE -o addwppack -filename "C:\ Program Files\Microsoft SQL Server\90\Tools\Reporting Services\SharePoint\RSWebParts.cab" -globalinstallSTSADM.EXE находится в папке C:\Program Files\Com-mon Files\Microsoft Shared\web server extensions\60\BIN.RSWebParts.Cab находится в папке C:\ Program Files\Microsoft SQL Server\90\Tools\Reporting Services\SharePoint.Team Explorer щелкните правой кнопкой ваш проект.Show Project Portal.Modify Shared Page.Browse и щелкните Add Web Parts.Virtual Server Gallery.Web Part List выберите вариант Report Viewer.Add.http ://<сервер отчетов>/re-ports.<мой проект>>/Quality Indicators.Если URL сервера отчетов или имя целевой папки указаны неверно, отчет не будет развернут на сервере отчетов. Выполняя развертывание отчета из Visual Studio 2005, укажите URL сервера, на который следует выполнить развертывание, и имя командного проекта, частью которого является данный отчет. Адрес URL сервера отчетов, на котором будет произведено развертывание, выглядит так: http://TeamServerName/СерверОтчетов, где СерверОтчетов - конечная точка веб-службы Report Server.
Укажите имя командного проекта в поле TargetReportFolder диалогового окна свойств развертывания с учетом регистра. При ошибке в регистре отчет будет развернут, однако не будет отображаться в списке отчетов командного проекта в Team Explorer.
Дополнительные ресурсы
Чтобы создавать снимки данных проекта через регулярные промежутки времени, используйте историю отчета. Эти снимки можно просматривать через какое-то время, чтобы увидеть тенденции развития проекта. Кроме того, они позволяют сохранить важные информационные точки проекта.
Создание запланированного снимка отчета
Properties.History.Создав расписание, вы сможете просматривать отчеты на вкладке History этого отчета. Там же можно создать снимок вручную.
Редактирование отчетов осуществляется при помощи инструмента Microsoft SQL Server™ 2005 Reporting Services Designer, входящего в Visual Studio (Business Intelligence Development Studio) из клиентского комплекта SQL Server 2005.
Настройка отчета позволяет расширить его функциональность, не создавая при этом нового отчета. Если нужный отчет похож на уже существующий, выполните настройку существующего отчета - это сэкономит ваше время. Для настройки существующего отчета вам придется экспортировать его с сервера отчетов, добавить в существующий проект отчета Visual Studio, а затем после внесения изменений выполнить повторное развертывание на портале отчетов.
Примечание Вы, конечно, можете использовать построитель отчетов ( Report Builder ), который имеется на сайте отчетов команды, но этот инструмент не очень хорошо поддерживается сценариями отчетов Visual Studio, поэтому работать с ним не рекомендуется.
Дополнительные ресурсы
Visual Studio 2005 Team Foundation Server " этой книги.По умолчанию веб-служба хранилища запускается для генерирования данных отчета ежечасно. Готовя отчет, запускайте службу вручную, чтобы в отчете с гарантией содержались актуальные данные.
Ручной запуск службы хранилища
Internet Information Services (IIS) Manager.Team Foundation Server.Warehouse\v1.0. Отобразится страница со списком действий, доступных по отношению к хранилищу.warehousecontroller.asmx и выберите команду Browse.Run, затем Invoke. Откроется второе окно обозревателя, отображающее состояние запроса выполнения. В нем должно быть отображено значение true.GetwareHouseStatus и щелкните Invoke.Отобразится текущее состояние веб-службы хранилища. Значение idle указывает, что запуск службы был выполнен.
Дополнительные ресурсы
В этом разделе
Доступ к системе управления версиями
Team Foundation Power Tools: восстановление отложенных изменений.Team Foundation Power Tools: откат изменения.Team Foundation Power Tools: автономная работа.Team Foundation Power Tools: получение набора изменений.Team Foundation Power Tools: удаление невозвращенных правок.Администрирование
Ветвление, метки, слияние
Candidate или Preview.Возврат после правки и политики возврата
Получение и блокировка кода
lock.Зависимости
local = true.URL.Распределенная и удаленная разработка
executionTimeout соответственно размеру файла и ширине канала.Переход из других версий
Team Foundation Server Source Control при помощи VSS Converter.Team Foundation Server Source Control из других систем управления исходным кодом.Управление проектами и рабочими областями
Windows.Отложенные правки
Team Foundation Power Tools: восстановление отложенных изменений.Team Foundation Power Tools: откат изменения.Team Foundation Power Tools: автономная работа.Team Foundation Power Tools: получение набора изменений.Team Foundation Power Tools: удаление невозвращенных правок.Для операций, не предусмотренных пользовательским интерфейсом Visual Studio, а также для задач, выполняемых по расписанию, удобны инструменты командной строки, например, Team Foundation Power Tools ( Tfpt.exe ), которые включены в комплект Team Foundation Server (TFS) , но загружаются отдельно. С их помощью вы можете настраивать выполнение задач по расписанию, используя планировщик заданий Windows (.
Чтобы с гарантией задать нужные пути и другие переменные окружения, запускайте Tf.exe из окна командной строки Visual Studio или выполните пакетный файл Vsvars32, который обычно располагается в папке Диск:\ Program Files\Microsoft Visual Studio 8\Common7\Tools. Инструмент Tf.exe поддерживает большинство команд системы управления исходным кодом, включая Checkin, и Undo.
Ниже указаны наиболее распространенные операции, выполняемые из командной строки с помощью Tf.exe:
tf get.tf add.tf checkout .tf checkin.Извлечение определенного набора изменений с сервера: tf get /version. Некоторые операции можно выполнить только из командной строки:
tf workspace /delete.tf undo.tf lock.tf label.tf merge.Дополнительные ресурсы
Инструментарий Team Foundation Power Tools (TFPT) обладает функциональными возможностями, недоступными в Visual Studio. Например, он поддерживает работу в автономном режиме, позволяет отменять возвращенные правки из набора изменений, а также восстановить отложенные изменения.
Операция возврата отложенных изменений ( unshelve ), поддерживаемая TFS, не допускает слияния отложенных изменений ( shelved change ) и локальных изменений ( local change ). Если в элемент локальной рабочей области внесено незафиксированное изменение-правка и кроме того с ним связано отложенное изменение-правка, TFPT позволяет выполнить трехстороннее слияние изменений.
Эта команда запускается из командной строки при помощи Tfpt.exe.
Дополнительные ресурсы
Вообще, система TFS напрямую не позволяет отменить возврат набора изменений, но вы можете попытаться отменить любые изменения, сделанные в конкретном наборе, при помощи команды rollback. Отменить удастся не все изменения, но в большинстве сценариев команда rollback работает. Эта команда запускается из командной строки при помощи Tfpt.exe.
Дополнительные ресурсы
В целом, автономный режим в TFS не поддерживается. Чтобы работать автономно, выполните описанные ниже действия в строго заданной последовательности:
TFPT online.Далее приводится подробное описание каждого из этих шагов.
Важно! Во время автономной работы нельзя переименовывать файлы.
Вручную снимите флаги "только для чтения".
По умолчанию, все файлы, извлеченные для правки, доступны только для чтения. При отсутствии подключения к серверу вы должны вручную снять флажки "только для чтения" с файлов, прежде чем редактировать или удалять их. Щелкните файл правой кнопкой в окне проводника Windows, выберите команду Свойства (Properties) , сбросьте флажок Только чтение (Read-only) и щелкните OK. То же действие можно выполнить с помощью команды DOS attrib -r.
Отредактируйте файлы.
Теперь вы можете редактировать любые файлы, с которых сняли метку "только для чтения".
Добавьте или удалите файлы.
Вы можете добавлять или удалять файлы, с которых сняли метку "только для чтения". Не переименовывайте файлы, поскольку инструмент TFTP online не в состоянии отличить переименование от удаления старого файла и добавления нового.
Примечание Выявление удаленных файлов - процедура, требующая довольно много времени, поэтому на необходимость ее выполнения в команде TFPT online указывает специальный параметр, который нужно задавать вручную.
Запустите команду TFPT online.
Вернувшись в оперативный режим, введите в командной строке TFTP online. Эта команда проверит рабочую область на предмет наличия записываемых файлов и установит, какие изменения следует отправить на сервер. Если вы удалили какие-либо файлы, задайте в команде параметр /delete, чтобы команда зафиксировала их. Затем инструмент отобразит окно, в котором можно выбрать изменения для переноса в рабочую область.
Дополнительные ресурсы
Команда TFPT GetCS позволяет получить список всех элементов, содержащихся в наборе изменений на момент его создания. Это полезно, например, если вы хотите получить изменение, возвращенное вашим коллегой, но не можете обновить до последней версии всю рабочую область.
Эта команда запускается из командной строки при помощи Tfpt.exe.
Дополнительные ресурсы
Используйте инструмент TFPT, чтобы удалить из файлов невозвращенные правки. Команда TFPT Undo удаляет невозвращенные правки из файлов, редактирование которых не было выполнено. Это полезно, когда вы извлекаете для редактирования большое количество файлов, но реально изменяете лишь некоторые из них. Вы можете отменить правки в неизмененных файлах, запустив инструмент TFPT UU. Он сравнивает хеши файлов в локальной рабочей области с хешами на сервере, что позволяет установить, был ли файл на самом деле изменен.
Эта команда запускается из командной строки при помощи Tfpt.exe.
Дополнительные ресурсы
Если ветвь предназначена для сопровождения, например, после выхода в свет очередной версии ПО, отключите наследование разрешений, чтобы изолировать дерево. После этого можно предоставить отдельным пользователям разрешения PendChange и Checkin для внесения исправлений.
Дополнительные ресурсы
Подробнее об удалении разрешений читайте в статье "How to: Remove Access to Source Control Files" по адресу http://msdn2.microsoft.com/en-us/library/ ms400718(VS.80).aspx.
Вы можете запретить возврат после правки в дерево исходного кода разработчикам, которым еще не достаточно доверяете, например, новичкам или стажерам. Прежде чем отключить наследование, убедитесь, что задали все нужные разрешения (включая разрешения для собственной учетной записи). Эти разработчики не смогут возвращать изменения напрямую, но им можно будет делать отложенные изменения и откладывать их при помощи команды shelve. Более опытный разработчик затем просмотрит эти изменения и при необходимости передаст в исходный код.
Дополнительные ресурсы
Подробнее об удалении разрешений читайте в статье "How to: Remove Access to Source Control Files" по адресу http://msdn2.microsoft.com/en-us/library/ ms400718(VS.80).aspx.
Candidate или Preview.Присваивайте метки повседневным сборкам, чтобы можно было быстро просмотреть и извлечь набор файлов, использованных в той или иной сборке. Система TeamBuild автоматически присваивает метку набору файлов, связанному с каждой создаваемой ей сборкой. Формат меток TeamBuild таков: "ТипВыпуска_НомерСборки", например, "Releasex86_20070226.1".
Хотя каждая сборка помечается автоматически, вам, возможно, потребуется создать собственные метки для сборок, к которым вы можете вернуться в дальнейшем, в частности:
Выпуская сборку, которую вам придется сопровождать, используйте вместо меток ветвление, чтобы изолировать последующие работы по сопровождению. Позже вы сможете выполнить слияние этой ветви и всех ее исправлений с главным деревом исходного кода.
Чтобы найти существующую метку, откройте меню File, разверните подменю Source Control, Label и щелкните Find Label. Найдя метку, вы можете изменить или удалить ее в диалоговом окне Find Label.
Дополнительные ресурсы
Создайте ветвь с исходным кодом, использованным при создании выпуска, поддержка которого осуществляется в настоящее время. Это позволит применять исправления и обновления к этой версии ПО, не влияя на продолжающуюся разработку базового исходного кода в главной ветви. При этом возможно выполнение стабилизационных слияний из ветви сопровождения в главную ветвь до выхода очередного выпуска продукта.
Далее приведен пример структуры ветвей после создания ветви Maintenance для поддержки вышедших версий ПО:
Main - ветвь интеграцииSourceReleases - контейнер для ветвей сопровожденияRelease 1 - ветвь сопровожденияSourceДополнительные ресурсы
Слияние в обозревателе Source Control возможно только по существующим путям ветвления. Из командной строки вы можете выполнять слияние без основы по другим путям, однако такой тип слияния менее гибок, что приводит к большему количеству конфликтов в текущем слиянии и будущих слияниях. Выполняя слияния, имейте в виду следующее. Слияние вдоль иерархии, от дочерней папки к родительской и наоборот, приводит к меньшему количеству конфликтов, чем слияние поперек иерархии. Кроме того, иерархия ветвей, основанная на родительских и дочерних ветвях, может отличаться от физической структуры исходного кода на диске. Например:
Development - ветвь разработкиMain - ветвь интеграцииReleases - контейнер для ветвей выпусковRelease 1 - ветвь выпускаMainDevelopment Release 1Дополнительные ресурсы
Выполняйте ветвление на уровне, положение которого обеспечит компили-руемость создаваемой ветви. Пример ветвления в дереве исходного кода:
Main - контейнер для всех ресурсов, требующихся при создании продукта.Source - контейнер, содержащий все, что нужно для сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, общего с другими проектами.Unit Testsv - контейнер для модульных тестов.Libv - контейнер для зависимостей двоичных файлов.Docs - контейнер для документации, поставляемой с продуктом.Installer - контейнер для исходного кода и двоичных файлов программы установки.Tests - контейнер для результатов тестирования.Ветвление следует выполнять на уровне папки Source. Благодаря этому новая ветвь будет содержать все файлы исходного кода и конфигурации.
Дополнительные ресурсы
Не увлекайтесь глубоким ветвлением. Это приводит к увеличению времени, требующегося на перенос изменений из дочерней ветви в родительскую ветвь. Пример ветвления в дереве исходного кода:
Development - контейнер для ветвей разработки.Main - ветвь интеграции.Source.При слиянии вдоль иерархии ветвей происходит меньше конфликтов. Поэтому при переносе изменений из вложенной ветви второго уровня в ветвь Main сначала выполняется перенос во вложенную ветвь первого уровня и ветвь разработки и лишь после этого - перенос в Main. Каждый из переносов требует времени на завершение, разрешение конфликтов, сборку и тестирование. Умножьте это время на количество уровней ветвей, имеющихся в созданной вами структуре.
Дополнительные ресурсы
Выполняйте ветвление только тогда, когда ваша команда столкнется с реальной необходимостью одновременной работы над одним и тем же набором файлов. Если вы не уверены в необходимости ветвления, пометьте сборку и создайте ветвь от этой сборки позднее. Слияние ветвей может оказаться дорогостоящим мероприятием, особенно, если между ними существуют значительные различия.
Для выполнения слияния и разрешения конфликтов требуется один или несколько разработчиков. После слияния исходный код должен быть тщательно протестирован, так как при разрешении конфликтов часто делаются ошибки, способные дестабилизировать сборку.
Особенно сложно проводить слияние поперек иерархии ветвей. При этом требуется ручная обработка многих конфликтов, которые в других обстоятельствах могли бы обрабатываться автоматически.
Дополнительные ресурсы
По возможности, избегайте слияний без основы. Проводя подобные слияния, TFS не располагает информацией о связях файлов и папок в ветвях, слияние которых выполняется. Как правило, это приводит к большему количеству конфликтов слияния и дополнительным конфликтам в предстоящих слияниях.
Структурируйте деревья ветвей таким образом, чтобы слияния выполнялись только вдоль иерархии (вверх и вниз по дереву), но не поперек. Ветвление поперек иерархии как раз и требует слияния без основы.
Выполняя слияние, имейте в виду следующее. Слияние вдоль иерархии, от дочерней папки к родительской и наоборот, приводит к меньшему количеству конфликтов, чем слияние поперек иерархии. Кроме того, иерархия ветвей, основанная на родительских и дочерних ветвях, может отличаться от физической структуры исходного кода на диске. Например:
Development - ветвь разработки.Main - ветвь интеграции.Releases - контейнер для ветвей выпусков.Release 1 - ветвь выпуска.Main.Development.Release 1.Дополнительные ресурсы
Вместо слияния отдельных изменений между ветвями (выборочное слияние) проведите полное слияние всей ветви. Выбирать отдельные изменения в ветви для слияния может быть и удобно, однако, если набор выборочных изменений попадает в середину диапазона будущего слияния, его слияние будет выполнено повторно. Это может привести к дополнительным конфликтам.
Это особенно актуально при поведении слияния из командной строки с использованием параметра \discard. При этом может быть выбран отмененный набор изменений, попавший в середину диапазона будущего слияния.
Дополнительные ресурсы
Не задерживайтесь со слияниями ветвей, особенно когда команды работают над одним выпуском, но в изолированных ветвях. Это обеспечит совместимость изменений.
Расписание слияний зависит от сложности структуры ветвей, а также от потребностей команды разработчиков. В структуре ветвей
Development - папка для изолированных ветвей разработки.External - ветвь внешней зависимости.Team 1 - ветвь команды.Team 2 - ветвь команды.Feature A - ветвь функции.Feature B - ветвь функции.Feature C - ветвь функцииMain - ветвь интеграции.Releases - папка для ветвей выпуска.Release 2 - ветвь выпуска.Safe Keeping - папка для хранения архивных копий ветвей.Release 1 - архивная ветвь.Дополнительные ресурсы
Начинайте новый проект с создания папки, обычно Main, в папке командного проекта. Поместите в эту папку весь исходный код главной ветви. Если вам потребуется создать новую ветвь, сделайте это непосредственно из папки Main.
Далее показан пример типичной структуры ветвления:
Development - папка для изолированных ветвей разработки, ответвление MainFeature A.SourceFeature B.SourceMain - ветвь компоновки и сборки.Source.Releases - папка для ветвей выпусков, ответвление Main.Release 1 - ветвь сопровождения.SourceДополнительные ресурсы
Перед выполнением слияния используйте параметры \candidate или \pre-view, чтобы проверить результаты слияния. Хотя эта возможность доступна только из командной строки, пренебрегать ею не следует. Она позволяет узнать, слияние каких файлов и версий будет выполнено при запуске команды слияния. С ее помощью, например, можно удостовериться, что реальный масштаб слияния не превышает ваши ожидания и что вы правильно оценили все последствия предпринимаемого слияния. При выполнении больших слияний отчет о слиянии поможет вам разделить работу между разработчиками или группами.
Для предварительного просмотра результатов слияния запустите инструмент командной строки Tf.exe с командой merge и параметрами preview или candidate, например:
Tf merge main/source development/feature/source /preview
Параметр preview позволяет предварительно просмотреть результаты слияния, а параметр candidate выводит список всех наборов изменений исходного кода, слияние которых еще не выполнено. В список включаются идентификаторы наборов изменений, перенос которых еще не состоялся, и другая общая информация об этих наборах.
Дополнительные ресурсы
Когда частью процесса слияния являются переименованные файлы, обращайте особое внимание на рекомендуемый системой путь и в случае необходимости внесите в него изменения. Все переименованные файлы отмечаются как конфликты. В процессе слияния переименованного объекта алгоритм слияния TFS пытается найти наилучший конечный путь. Иногда путь по умолчанию оказывается не лучшим вариантом, поэтому вам следует проверить его перед передачей файла.
Дополнительные ресурсы
Выполняйте слияние с осторожностью - допущенные при этом ошибки могут привести к нестабильности сборки.
Дополнительные ресурсы
Возвращайте результаты слияния, прежде чем выполнить другое слияние, использующее те же файлы. Завершив первое слияние, скомпилируйте исходный код и убедитесь в успешном завершении модульных тестов, после чего возвратите отложенные изменения. Далее начните второе слияние, придерживаясь той же процедуры.
Выполнение слияний по отдельности упрощает процесс и позволяет при необходимости отменить изменения.
Дополнительные ресурсы
После слияния убедитесь, что код компилируется, а соответствующие тесты успешно выполняются, и лишь потом возвращайте файл слияния. Это позволяет избежать нестабильности сборки в результате выполненных слияний.
Изначально результаты слияния изолированы в вашей рабочей области и не выгружаются на сервер, пока вы не вернете отложенные изменения.
Дополнительные ресурсы
Возвращайте обновленный код в систему управления исходным кодом только после того, как он полностью прошел модульное тестирование и готов к использованию остальной частью команды. На промежуточном этапе работы используйте наборы отложенных правок ( shelvesets ).
После возвращения код будет использоваться в составе следующей плановой сборки. Если работа над кодом не завершена, он может стать причиной нестабильности сборки. Кроме того, любой разработчик, выполнив команду get latest, перенесет ваши изменения к себе. Если они не завершены или недостаточно протестированы, у вашего коллеги могут возникнуть проблемы.
Дополнительные ресурсы
Используйте наборы отложенных правок ( shelveset ) для архивации файлов, содержащих не готовые к возврату изменения. Их также можно использовать для предоставления общего доступа к коду с ознакомительными целями, а также при передаче задания другому разработчику. С помощью наборов отложенных правок вы можете выгружать незавершенные изменения на сервер, не возвращая их в систему управления исходным кодом, если, например, работа над ними еще не закончена и изменения могут привести к нестабильности сборки.
Чтобы отложить правки, сначала просмотрите их список: щелкните правой кнопкой решение в окне обозревателя Solution Explorer и выберите команду View Pending Changes. Выберите файлы, которые хотите отложить и щелкните Shelve. Введите имя набора и комментарий, поясняющий его назначение, а затем щелкните Shelve.
Извлечение набора отложенных правок
File, разверните подменю Source Control и выберите команду Unshelve.Owner name введите имя создателя набора отложенных правок (например, Contoso\JimB или просто JimB ) и щелкните Find.Results выберите набор отложенных правок, который хотите загрузить в рабочую область и щелкните Details.TFS, сбросьте флажок Preserve shelveset on server. Система TFS восстановит каждую отложенную правку в целевую рабочую область в качестве незавершенного изменения, при условии что правка не конфликтует с уже существующим отложенным изменением в этой же рабочей области.Restore work items and check-in notes, если не хотите загружать рабочие элементы и заметки о возврате восстанавливаемого набора. В открывшемся диалоговом окне Details выберите наборы отложенных правок или их элементы, которые хотите поместить в рабочую область, и щелкните Unshelve.Дополнительные ресурсы
После разрешения рабочего элемента верните отложенные изменения и обновите статус рабочего элемента. Суть выполнения данной процедуры в следующем:
Дополнительные ресурсы
Используйте политики возврата для соблюдения правил программирования внутри команды разработчиков. Политики возврата помогают обеспечить соответствие кода, возвращаемого в систему TFS, заданным стандартам.
Стандартные политики возврата из комплекта TFS позволяют проводить обязательный статический анализ кода перед его возвратом. Вы можете настроить политику анализа кода для проверки различных правил. Например, вы можете проверять выполнение правил проектирования, способности к взаимодействию, сопровождения, переносимости, надежности, а также соглашений об именах и пр.
Чтобы применить в командном проекте политику анализа кода при возврате, выполните следующие действия:
Team Explorer щелкните правой кнопкой нужный командный проект, раскройте подменю Team Project Settings и выберите команду Source Control.Check-in Policy и щелкните Add.Check-in Policy установите параметр Code Analysis и щелкните OK.Code Analysis Policy Editor установите Enforce C/C++ Code Analysis (/analyze) или Enforce Code Analysis for Managed Code. Установите оба параметра, если проект содержит как управляемый, так и неуправляемый код.Enforce Code Analysis for Managed Code, настройте правила анализа управляемого кода в соответствии с вашими стандартами программирования.Вы также вольны создать собственную политику возврата, позволяющую выполнять проверки, не входящие в состав стандартной политики. В частности, можно запретить вызовы функций API запрещенных приложений или задать нормативы определенного стиля программирования, например, в каких местах следует помещать фигурные скобки.
Дополнительные ресурсы
TFS " этой книги.Сочетание политик анализа и тестирования кода позволяет осуществлять контроль его качества. Например, при помощи стандартной политики тестирования можно указать, что код будет допущен к возврату в систему управления исходным кодом TFS только после проведения заданных тестов. Вы также вольны настроить политику анализа кода, чтобы гарантировать соответствие кода заданным стандартам качества, то есть, соблюдение правил безопасности, производительности, переносимости,
Чтобы применить политику анализа кода при возврате в систему управления исходным кодом, выполните следующие действия:
Team Explorer щелкните правой кнопкой нужный командный проект, раскройте подменю Team Project Settings и выберите команду Source Control.Check-in Policy, щелкните кнопку Add, а затем выберите и настройте определенную политику.Дополнительные ресурсы
TFS " этой книги.Система Team Foundation не предотвратит перекрытие политики. Однако, выполнив следующие действия, вы сможете установить факт перекрытия политики:
Team Foundation Eventing Service из Team Foundation Core Services API, чтобы внедриться в события возврата.Notify, который анализирует параметры набора изменений и реагирует на перекрытие, если оно случится.Другой способ заключается в просмотре истории набора изменений с целью обнаружения перекрытий политики.
Дополнительные ресурсы
Планируйте работу так, чтобы несколько разработчиков не работали одновременно над одним и тем же фрагментом исходного кода. Иначе возникнут конфликты, разрешить которые бывает непросто. Конечно, часто помогает автоматическое разрешение конфликтов, но оно не поможет, если два или несколько разработчиков работают над одним и тем же методом или одними и теми же строками кода. Конфликты в строках требуют разрешения вручную, что усложняет слияние. Ключ к решению проблемы - эффективное взаимодействие в команде.
Перед началом работы над файлом убедитесь, что извлекли из системы управления исходным кодом последнюю версию этого файла, а также проверьте, не работает ли с этим же файлом кто-то еще. Если с файлом уже работает ваш коллега, спросите, что именно он делает, и решите, стоит ли вам дождаться окончания его работы, или же вам можно действовать параллельно, поскольку вы работаете над разными функциями в разных участках исходного кода.
Чтобы выяснить, извлек ли кто-то файл или нет, выполните следующие действия:
Team Explorer в Visual Studio щелкните дважды Source Control.Чтобы узнать, для каких файлов в данный момент имеются незавершенные изменения, в командной строке Visual Studio 2005 введите следующую команду:
Tf status /format:detailed /user:*
Начиная работу с файлом исходного кода, который будет задействован кем-то еще, сообщите другим членам команды, что работаете над файлом и поясните, что конкретно будете обновлять.
Дополнительные ресурсы
Перед извлечением кода для редактирования убедитесь, что имеете дело с последними версиями всех файлов исходного кода проекта. Чтобы получить их, запустите команду get latest. Если этого не сделать, есть опасность того, что вы будете писать код в устаревших версиях файлов, а последующий возврат вашего кода на сервер приведет к проблемам со сборкой.
Чтобы получить последние копии файлов, относящихся к тому или иному проекту, щелкните правой кнопкой командный проект в окне обозревателя Source Control и выберите команду Get Latest Version. Если в данный момент в вашей рабочей области имеются записываемые файлы с незавершенными правками, эти файлы не будут перезаписаны. Эту команду можно запустить и из командной строки, введя Tf get /all в папке, сопоставленной с текущей рабочей областью.
Дополнительные ресурсы
Не стоит слишком увлекаться использованием команды lock. Блокирование файла во время работы над ним может отрицательно сказаться на производительности всего процесса разработки, поскольку другие пользователи не смогут одновременно работать над этим же файлом. Блокировка файла на время редактирования нужна только в случае, если вы опасаетесь возникновения конфликтов, которые могут вынудить вас выполнять сложное ручное слияние. По возможности разрешайте совместную работу, во время извлечения файла устанавливая тип блокировки None.
Ниже приведены сценарии, при которых использование команды lock оправдано:
Чтобы избежать любой возможности возникновения конфликта, блокируйте файл, извлекая его для редактирования. Это не даст другим пользователям извлекать этот же файл для редактирования и возвращать его. Обязательно известите своих коллег о причинах блокировки и примерном времени, которое потребуется вам для редактирования. Также сообщите им, что сняли блокировку и вернули файл с изменениями.
Можно назначить тип блокировки в процессе извлечения файла для редактирования или заблокировать файл явным образом.
Чтобы заблокировать файл в процессе извлечения, выполните следующие действия:
Source Control щелкните файл правой кнопкой и выберите команду Check Out for Edit.None, Check Out или Check In.Lock. Затем укажите тип блокировки - Check Out или Check In.В отличие Microsoft Visual Source Safe® (, при извлечении файла в TFS вам не предлагается по умолчанию последняя версия. Прежде чем заблокировать файл, поместите в рабочую область его последнюю версию, выполнив команду Get Latest Version.
Дополнительные ресурсы
Блокируя файл исходного кода, оповестите об этом членов команды, чтобы они могли планировать свою работу с учетом недоступности файла. Объясните, почему вам нужен исключительный доступ к файлу и как долго будет сохраняться блокировка. Блокировка файла может стать причиной снижения производительности в цикле разработки, когда нескольким разработчикам нужно работать над одним и тем же исходным кодом.
Блокировка файла на время редактирования нужна только в случае, если вы опасаетесь возникновения конфликтов, которые могут вынудить вас выполнять сложное ручное слияние. По возможности разрешайте совместную работу, во время извлечения файла устанавливая тип блокировки None.
Чтобы заблокировать файл в окне обозревателя Source Control, щелкните файл правой кнопкой мыши и выберите команду Lock. Затем укажите тип блокировки - Check Out или Check In.
Дополнительные ресурсы
URL.По возможности используйте ссылки на проект, потому что они обладают следующими преимуществами:
GUID ) проекта расположен в файле проекта, что однозначно идентифицирует проект, на который имеется ссылка, в контексте текущего решения.Visual Studio отслеживать Debug любые ссылки проекта указывают на сборки Debug, сгенерированные проектами, на которые ссылается сборка. При сборке в конфигурации Release эти же ссылки указывают на сборки Release. Это означает, что вы можете автоматически переходить от отладочных сборок к сборкам выпуска без перенастройки ссылок.Visual Studio обнаруживать и предотвращать циклические зависимости.Вы можете использовать ссылки на проект, если файл сборки находится в наборе проектов решения. Если файл сборки находится за пределами набора проектов решения, а вам нужна ссылка на проект, вы можете выполнить ветвление из исходного проекта в ваш проект. Когда потребуется обновить версию зависимости, произведите слияние из исходного проекта в вашу ветвь.
Дополнительные ресурсы
Иногда невозможно использовать ссылку на проект, например, когда требуется создать ссылку на файл сборки за пределами набора проектов текущего решения и вы не хотите выполнять ветвление из исходного проекта в ваш проект. В этом случае вам придется установить файловую ссылку.
Дополнительные ресурсы
С каждой ссылкой сопоставлен атрибут copy local. В Visual Studio значение этого атрибута ( TRUE или FALSE ) задается при первом добавлении ссылки. Значение FALSE присваивается, если сборка находится в глобальном кеше сборок ( GAC ). В противном случае, присваивается значение TRUE. Значение, заданное по умолчанию, изменять не следует.
Если атрибут copy local имеет значение true, система сборки Visual Studio копирует любую сборку, на которую имеется ссылка, а также все зависимые нисходящие сборки, в клиентскую выходную папку. Например, если клиентский проект ссылается на сборку Lib1, а Lib1 зависит от Lib2 и Lib3, то во время сборки Visual Studio автоматически копирует Lib1, Lib2 и Lib3 в локальную выходную папку вашего проекта.
Дополнительные ресурсы
Чтобы вызвать веб-службу, следует добавить в проект веб-ссылку Так генерируется прокси-класс, посредством которого вы взаимодействуйте с веб-службой. Код прокси изначально содержит или http://SomeWebServer.
Важно! Для веб-служб, выполняющихся на вашем компьютере, всегда используйте адрес http://localhost а не http://ИмяМоегоКомпьютера, чтобы сохранить работоспособность ссылки на любом компьютере.
Статический URL, внедренный в прокси, как правило, не совпадает с URL, который будет использоваться в испытательной и рабочей среде. Обычно URL меняется, по мере того как ваше приложение проходит путь от разработки к тестированию и производству. Есть три способа решения этого вопроса:
URL веб-службы во время создания экземпляра прокси-класса.URL Behavior ссылки на веб-службу значение Dynamic. Это предпочтительный вариант. При этом в прокси-класс добавляется код, извлекающий URL веб-службы из пользовательского раздела файла конфигурации приложения - Web.config для веб-приложения или SomeApp.exe.config для приложений Windows.WSDL.exe, задав параметр /urlkey. При этом происходит примерно то же самое, что и при установке свойства URL Behavior, но в этом случае URL хранится в разделе <applicationSettings> файла конфигурации приложения. Использование динамического URL позволяет создавать пользовательский файл конфигурации, который способен перекрывать параметры основного файла конфигурации приложения. Это позволяет разработчикам и членам группы тестирования временно перенаправить ссылку веб-службы в другое положение.Дополнительные ресурсы
executionTimeout соответственно размеру файла и ширине канала.Следуйте системным требованиям, приведенным в руководстве по установке TFS. В особенности это касается объема жесткого диска. Верхняя граница задается, исходя из объема дискового пространства, которое прокси может использовать для кеширования файлов. По достижению этого предела старые файлы удаляются из кеша, чтобы освободить место для новых файлов. При
Дополнительные ресурсы
Для извлечения новейших файлов в прокси-сервер регулярно запускайте запланированное задание. Это обеспечит наличие последних версий файлов в кеше прокси, а значит, последующие запросы клиентами этих файлов будут выполняться из кеша.
Дополнительные ресурсы
Периодически проверяйте счетчики производительности прокси и журнал событий Windows на предмет наличия ошибок и предупреждений, чтобы получить наглядное представление об эффективности прокси. Убедитесь, что на прокси включена функция кеширования, и следите за производительностью кеша.
Вот список счетчиков производительности, за которыми нужно следить:
Current Cache Size ).Total Cache Hits ).Total Download Requests ).Total Files in Cache ).Total Cache Miss ).Счетчики производительности регистрируются при установке прокси. Они рассчитаны на работу с несколькими экземплярами, то есть, каждому уровню приложений, заданному в файле Proxyconfig, соответствует свой набор счетчиков. Собирая показания счетчиков, вы получите общую картину производительности прокси-сервера.
TFS Proxy сохраняет статистические данные о производительности кеша в XML -файле ProxyStatistics.xml. Вы вольны задать временной интервал для сохранения этих данных. Файл ProxyStatistics.xml находится в подпапке App_Data папки установки прокси.
Дополнительные ресурсы
Если вам предстоит загрузка больших файлов по сети с невысокой пропуск ной способностью (менее 3 Мбит/с), исправьте значение параметра executionTimeout в файле Web.config, чтобы сократить вероятность истечения срока передачи. Значение по умолчанию равно одному часу:
<httpRuntime executionTimeout="3600"/>.
Дополнительные ресурсы
Отключайте прокси на клиентских компьютерах, если прокси не будет работать длительное время. Иначе клиенты будут предпринимать бесполезные попытки восстановить подключение. По умолчанию, эти попытки повторяются каждые пять минут.
Дополнительные ресурсы
Во избежание ненужных перемещений файлов используйте сокрытие рабочей области. При этом не только достигается сокрытие определенных папок рабочих областей, но и повышается производительность системы обработки данных. Запретив копирование не нужных в данный момент файлов и папок в рабочую область, вы сохраните место на локальном диске. Вы можете скрыть существующее сопоставление папки в рабочей области, но лучше создать новое сопоставление, специально предназначенное для сокрытия.
Чтобы скрыть папки в рабочей области, выполните следующие действия:
Visual Studio в меню File раскройте подменю Source Control и выберите команду Workspaces.Manage Workspaces выберите рабочую область, к которой хотите применить сокрытие, и щелкните кнопку Edit.Edit Workspaces выделите в списке Working Folders сопоставление, которое хотите скрыть, или создайте новое сопоставление.Active на Cloak.OK, чтобы закрыть диалоговые окна Edit Workspaces и Manage Workspaces.Помните, что файлы не будут локально скрыты, пока вы повторно не выполните команду get для всей рабочей области.
Дополнительные ресурсы
Team Foundation Server Source Control при помощи VSS ConverterTeam Foundation Server Source Control из других систем управления исходным кодомВ комплекте Team Foundation Server поставляется инструмент , позволяющий переносить файлы, папки, историю версий, метки и пользовательскую информацию из БД Visual SourceSafe в систему управления исходным кодом Team Foundation Server.
Следует знать, что конвертер имеет некоторые ограничения, например:
Team Foundation Server не поддерживает общий доступ. Перемещение совместно используемого файла сводится к копированию этого файла в конечную папку.Team Foundation Server не поддерживает закрепление ( pinning ). Закрепленные файлы переносятся с созданием двух меток.Дополнительные ресурсы
Visual SourceSafe " этой книги.Вы можете вручную выполнить экспорт файлов из предыдущей системы управления версиями, а затем импортировать их в систему управления версиями . При помощи этого инструментария вы сможете написать собственное средство для выполнения миграции.
В данный момент корпорация .
Существует конвертер, созданный компанией , который совместим с системами GNU и Visual SourceSafe (.
Дополнительные ресурсы
Windows.Чтобы изолировать свою работу от остальной команды, используйте дополнительную рабочую область, но не создавайте новую ветвь. При этом первая рабочая область будет содержать ссылки на файлы и папки, над которыми работает остальная команда (то есть, общий исходный код), а вторая предназначается для файлов и папок, которые вы хотите изолировать. Это может потребоваться, например, если вы хотите поработать над файлами отдельно от основного процесса разработки, в частности, при внесении рискованных или экспериментальных изменений. Использование второй рабочей области позволяет избежать дополнительных сложностей при ветвлении и слиянии.
Чтобы создать вторичную рабочую область, выполните следующие действия:
Source Control выберите в раскрывающемся списке Workspace вариант Workspaces.Manage Workspaces щелкните кнопку Add.Add Workspace введите имя новой рабочей области, например, ИзолированнаяРабота. Добавьте комментарий с описанием цели создания рабочей области.Working Folders задайте для рабочей области состояние Active. Укажите папку с исходным кодом, которую нужно включить в рабочую область. Это может быть корневая папка командного проекта или любая вложенная папка. Задайте путь на локальном компьютере, где будут храниться файлы рабочей области.OK и Close, чтобы создать изолированную рабочую область. Чтобы извлечь последнюю версию исходного кода и начать работать с ним в изолированной рабочей области, выполните следующие действия:Source Control в раскрывающееся списке Workspace выбрано имя нужной рабочей области.Get Latest Version.При этом будет выполнено копирование структуры папок и актуального набора файлов с сервера управления исходным кодом в локальную папку на вашем компьютере, сопоставленную с новой рабочей областью. Дополнительные ресурсы
Если вам надо удалить или переименовать файлы, добавленные в систему управления исходным кодом, это следует делать в обозревателе Source Control, запустив Tf.exe из командной строки. Нельзя удалять и переименовывать файлы в проводнике Windows, так как при этом нарушается синхронизация файлов локальной рабочей области с файлами сервера управления исходным кодом.
Порядок действий при удалении файла или папки при помощи Source Control Explorer:
Source Control выберите файл или папку.Delete.Слева появится значок, символизирующий удаление объекта. В столбце Pending Change отобразится статус Delete. Удаление произойдет при очередном возврате правок.
Примечание Невозможно удалить объект, для которого имеется незавершенное изменение. Например, нельзя удалить файл, извлеченный для редактирования.
Особенно удобно использование команд Tf move, delete и rename при работе с несколькими файлами или папками одновременно. В обозревателе Source Control можно перемещать, переименовывать или удалять только по одному файлу или папке.
Дополнительные ресурсы
Удаление и переименование файлов в Solution Explorer следует выполнять при открытом решении. Не удаляйте их непосредственно с диска. Это гарантирует, что при следующем возврате незавершенных изменений система управления исходным кодом TFS сохранит синхронизацию.
Дополнительные ресурсы
Если вы планируете переносить из версии в версию не только исходный код, но и рабочие элементы, а также другие ресурсы TFS, используйте один командный проект на одно приложение. При использовании общего командного проекта для нескольких версий приложения все папки TFS автоматически переносятся в следующий выпуск. Когда все готово к выпуску новой версии приложения, вы можете создать ветвь внутри проекта, чтобы осуществить выпуск и изолировать код.
Используя один проект для каждого приложения, учитывайте следующее:
TFS и выйти за пределы масштабируемости.Дополнительные ресурсы
Если вы не хотите переносить рабочие элементы и другие ресурсы TFS из выпуска в выпуск, создавайте один проект на каждый выпуск. Это позволит вам изменять схемы рабочих элементов, рабочую процедуру, политики возврата после правки и другие элементы, не затрагивая прошлые выпуски. Такая организация работы особенно полезна, если предыдущий выпуск будет сопровождаться другой командой, например, группой непрерывной разработки, рабочий процесс в которой может отличаться от основной команды разработчиков.
Используя отдельный проект для каждого нового выпуска, имейте в виду следующее:
TFS из одного проекта в другой очень нелегко. Рабочие элементы можно копировать в другой проект только по одному; если вы хотите скопировать набор рабочих элементов, вам потребуется написать собственную утилиту.TFS и выйти за пределы масштабируемости.Team Foundation Server способна вместить около 500 проектов с использованием Microsoft Solution Framework (MSF) для шаблона процесса MSF Agile и до 250 проектов с использованием шаблона процесса MSF CMMI. Если вы создаете собственный процесс или выполняете настройку существующего, помните, что схемы рабочих элементов имеют огромное влияние на масштабируемость сервера. Чем сложнее схема, тем меньшее количество проектов способен поддерживать сервер.Дополнительные ресурсы
Управление общим исходным кодом или двоичными файлами производится в два этапа:
Сохранив зависимость, выполните ветвление общего исходного или двоичного кода в ваш проект. Каждый раз при выполнении слияния из общего проекта в конечный вы получите новейшую версию исходного кода. Это позволяет копировать последние изменения по заданному расписанию и выполнять интеграционную проверку до изменения кода в главном дереве.
Дополнительные ресурсы
Как правило, следует избегать зависимостей, пересекающих командные проекты. Старайтесь объединять все взаимозависимые решения и проекты в общем командном проекте. При этом вам реже придется прибегать к настройке сценария сборки. Если у вас есть зависимость, используйте для ее определения ссылки на проект или создайте для зависимости ответвление из общего проекта в свой проект. Избегайте файловых ссылок, потому что ими сложнее управлять. Исключение составляют случаи, когда разработка
Дополнительные ресурсы
В новом командном проекте сопоставляйте корень проекта ( $/ MyTeamProject ) с папкой на локальном диске, имеющей похожее имя, например, C:\TeamProjects. Поскольку сопоставления являются рекурсивными, вся структура локальной папки создается автоматически и будет в точности повторять структуру в системе управления исходным кодом.
Дополнительные ресурсы
Два пользователя одного компьютера не могут использовать одно и то же сопоставление рабочей области. Допустим, вы и ваш коллега не можете сопоставить один командный проект ( $/MyTeamProject ) с одной и той же папкой на локальном компьютере. Создавайте сопоставления в папке Мои документы (хотя это удлиняет путь) или разработайте соглашение об именах для папок на локальном компьютере (например, C:\TeamProjects\User1, C:\ TeampProjects\User2 и т.д.).
Дополнительные ресурсы
Чтобы повысить производительность и сократить использование диска, сопоставляйте только те файлы, которые требуются для проекта разработки. В основном, вам требуются только файлы и проекты, связанные с решением, над которым вы работаете.
Дополнительные ресурсы
Структура дерева исходного кода состоит из сочетания структуры папок, структуры файлов и структуры ветвей. Внутри главной ветви в различных по размеру командах хорошо зарекомендовала себя следующая структура папок и файлов:
Main - контейнер для всех объектов, нужных для отправки проекта заказчику.Source - контейнер для всех объектов, требующихся для выполнения сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, используемого совместно с другими проектами.Unit Tests - контейнер для модульных тестов.Lib - контейнер для двоичных зависимостей.Docs - контейнер для документации, поставляющейся с проектом.Installer - контейнер для исходного кода и двоичных файлов программы установки.Tests - контейнер с результатами тестов, проводившихся тестовой командой.Любое ветвление, проводимое не в папке Main, повлечет за собой копирование структуры папок и файлов в новую ветвь, например:
Development - ветвь разработки.Source - контейнер для всех объектов, требующихся для выполнения сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, используемого совместно с другими проектами.Unit Tests - контейнер для модульных тестов.Lib - контейнер для двоичных зависимостей.Main - Ветвь интеграции.Source - контейнер для всех объектов, требующихся для выполнения сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, используемого совместно с другими проектами.Unit Tests - контейнер для модульных тестов.Lib - контейнер для двоичных зависимостей.Docs - контейнер для документации, поставляющейся с проектом.Installer - контейнер для исходного кода и двоичных файлов программы установки.Tests - контейнер с результатами тестов, проводившихся тестовой командой.Дополнительные ресурсы
Если вы хотите обсудить незавершенный код с удаленным членом команды, используйте отложенные правки. Вместо того чтобы отправлять код другому члену команды по электронной почте, вы можете создать правку кода на сервере, а затем предложить коллеге извлечь эти файлы. Также можно использовать отложенную правку, если вы хотите переслать недоработанный код другому разработчику для завершения.
Вы можете отложить правки, если не завершили работу к концу рабочего дня и хотите с гарантией сохранить работу на сервере. Отложив текущие изменения, вы переносите их на сервер TFS, откуда сможете их извлечь их на следующий день (или передать другому члену команды).
Используйте отложенные правки, если в процессе внесения изменений в исходный код вы получили новое более срочное задание (например, исправление ошибки). Для этого вам придется вернуться к стабильной версии кода, но вы не хотите терять свои изменения. Отложите код, чтобы позднее снова извлечь его.
Дополнительные ресурсы
В этом разделе
Стратегия:
Ветвление
TFSBuild.proj при создании полной ветви.Политики возврата после правки
Непрерывная интеграция
Настройка
MS Build Toolkit Extras для сборки приложений Microsoft .NET 1.1.TFSBuild.proj для изменения параметров сборки.Развертывание
Производительность
Team Build.Проекты
Web Deployment Project для веб-приложений.Сборки по расписанию
Тестирование как основа разработки
Рабочие элементы
Используйте расписание для выполнения сборок на регулярной основе с предсказуемыми интервалами.
Как правило, сборка, выполняемая для группы тестирования и других членов команды, должна производиться безотказно и с фиксированной частотой по времени, чтобы реакция на результаты сборки была своевременной.
Компонент Team Build из комплекта Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) не поддерживает создание сборок по расписанию из пользовательского интерфейса. Однако, чтобы начать сборку в заданное время, вы вольны использовать Microsoft Windows® для запуска утилиты командной строки TFSBuild
Создание сборки по расписанию
TFSBuild:TfsBuild start <<имя сервера сборки>> << командный проект>> << тип сборки>>
Windows, которая будет запускать пакетный файл с нужным интервалом.Дополнительные ресурсы
Team Build вы найдете в лекции 9 этой книги.TFS вы найдете в разделе "Как настроить плановую сборку в Visual Studio Team Foundation Server " этой книги.Используйте непрерывные сборки, чтобы обеспечить оперативное информирование группы разработки о качестве сборки и возможных негативных изменениях после каждого возврата после правки. Это позволит группе разработки быстро устранить проблемы сборки и повысит качество вашего кода.
Хотя Team Foundation Server 2005 не содержит встроенного средства для непрерывной интеграции, в нем есть все необходимое для реализации собственного решения непрерывной сборки.
Дополнительную информацию о настройке непрерывных сборок в TFS вы найдете в разделе "Как настроить непрерывную сборку в Visual Studio Team Foundation Server ", где используется решение, представленное группой разработки Microsoft Visual Studio Team System (VSTS) . Решение устанавливает веб-службу, которая работает от имени учетной записи, имеющей доступ к серверу TFS. Team Foundation Server позволяет при возникновении определенного события отправлять сообщение электронной почты или вызвать веб-службу Механизм событий используется решением непрерывной интеграции для регистрации веб-службы, связанной с событием Checkin-Event. Всякий раз, когда происходит возврат после правки, веб-служба инициирует запуск Team Build.
Дополнительные ресурсы
TFS вы найдете в разделе "Как настроить плановую сборку в Visual Studio Team Foundation Server " этой книги.Выполнение сборки после каждого возврата - самая простая стратегия непрерывной интеграции, которая обычно обеспечивает самую быструю реакцию. Однако, если возврат после правки производится достаточно часто, она приводит к перегрузке сервера сборок. В этом случае вам следует использовать другой подход, при котором сборка производится после определенного числа возвратов после правки или по истечении определенного времени. Чтобы решить, нужно ли вам использовать скользящую сборку, выясните следующее:
Team Build в минутах;Если длительность сборки больше среднего интервала между возвратами после правки, сборки будут выполняться непрерывно: одна сборка еще не будет завершена, когда уже произойдет следующий возврат после правки, инициирующий следующую сборку. Если возвраты после правки производятся до завершения предшествующей сборки, это негативно отражается на производительности сервера сборок и блокирует запуск других сборок (например, сборок по расписанию). Определите промежуток времени, в течение которого возвраты после правки производятся особенно часто, и выясните, будет ли непрерывная интеграция оказывать влияние на сборки по расписанию и другие важные командные сборки.
Дополнительные ресурсы
Чтобы сократить количество сбоев при сборке, используйте ветвь Development для активной разработки и ветвь Main для интеграции.
Ниже приведен пример структуры ветвей после создания ветви Development:
Development - ветвь для разработки.Source.Main - главная ветвь сборки.Source.При работе с ветвлением принимайте во внимание следующие рекомендации:
Main должны предоставляться разработчикам, ответственным за слияние и интеграцию. Всем остальным достаточно доступа только для чтения.Development должна быть доступна всем как для чтения, так и для записи.Main.Development.Main.Development.Используйте ветвь Main для интеграции изменений, произведенных в ветви разработки. Всю активную разработку ведите в ветви Development. В ветвь Main переносите только проверенные изменения.
Дополнительные ресурсы
Чтобы повысить качество возвратов после правки, применяйте сочетание анализа кода и политики тестирования. Например, воспользуйтесь готовой политикой тестирования, чтобы исходный код возвращался в систему управления исходными кодами лишь при условии успешного выполнения определенных тестов. Также вы вольны настроить политику анализа кода, чтобы обеспечить соответствие кода определенным стандартам, и выполнение требований к безопасности, производительности, переносимости,
Применяя политику возврата после правки в сочетании с политиками, устанавливающими стандарты и правила кодирования, вы протестируете код на предмет наличия определенных проблем.
Чтобы настроить политику анализа кода при возврате после правки для командного проекта, щелкните проект правой кнопкой мыши в Team Explorer, выберите Team Project Settings, затем щелкните Source Control. Перейдите на вкладку Check-in Policy, щелкните Add, затем выберите и настройте соответствующую политику.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Чтобы отслеживать процесс сборки, создайте уведомление, которое при завершении сборки будет отправлять вам или кому-нибудь еще сообщение электронной почты.
Это важно, поскольку обеспечивает максимальную оперативность
Дополнительные ресурсы
TFSBuild.proj при создании полной ветви.Создание ветви с подмножеством решений командного проекта может повлечь за собой создание новых типов сборок. Существуют неполные ветви двух типов:
TeamBuildTypes.TeamBuildTypes (типов сборки).Если вы создаете неполную ветвь, не включающую в себя типы командной сборки, все существующие командные сборки сохраняют работоспособ-ностьми, но вам придется создать новые типы командной сборки, чтобы осуществить сборку в ветви. Создавайте новые типы сборки с помощью мастера Team Build Wizard. В новом типе сборки будет указание на новое положение ветви, а также на родительское положение для любых решений, которые должны быть включены в сборку, но при этом не включены в ветвь.
Если вы создадите неполную ветвь, включающую типы командной сборки, скопированные с ветвью типы сборки будут указывать на положение исходной родительской ветви и не позволят собрать новую ветвь. Измените ответвленные типы сборки, чтобы они указывали на новое положение ответвленного кода.
Дополнительные ресурсы
Когда вы создаете новую ветвь, включающую типы командной сборки, пути к типам сборки будут по-прежнему указывать на предыдущее положение. Чтобы сборка работала в новой ветви, вам следует обновить пути к файлам типов сборки проекта: они должны ссылаться на новые пути, созданные после ветвления.
Если создается полная ветвь, при этом также осуществляется ветвление типов сборки. Типы сборки содержат ссылки на папки из первичного дерева управления исходными кодами. Чтобы они ссылались на папки ответвления, отредактируйте ссылки. Извлеките типы сборки из ветви, которую хотите изменить, внесите изменения, а затем верните их в ветвь.
Дополнительные ресурсы
Чтобы повысить качество возвратов после правки, применяйте сочетание анализа кода и политики тестирования. Например, воспользуйтесь готовой политикой тестирования, чтобы исходный код возвращался в систему управления исходными кодами лишь при условии успешного выполнения определенных тестов. Также вы вольны настроить политику анализа кода, чтобы обеспечить соответствие кода определенным стандартам, и выполнение требований к безопасности, производительности, переносимости,
Применяя политику возврата после правки в сочетании с политиками, устанавливающими стандарты и правила кодирования, вы протестируете код на предмет наличия определенных проблем.
Дополнительные ресурсы
Существует политика возврата после правки, которая вынуждает разработчиков связывать возврат после правки с рабочим элементом.
Если при сборке произошел сбой, важно знать, какие наборы изменений связаны с данной сборкой и какие рабочие элементы связаны с этими наборами. Имея такие сведения, вы определите разработчика, ответственного за внесение измененного кода, и область проекта, в которой он работает.
Чтобы сборку можно было связать с набором завершенных рабочих элементов, каждый возврат после правки должен быть связан с рабочим элементом. Возвраты после правки представляют собой наборы изменений, связанных со сборкой, благодаря чему возможно перейти от сборки к набору изменений и соответствующему рабочему элементу.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Используйте непрерывные сборки, чтобы обеспечить оперативное информирование группы разработки о качестве сборки и возможных негативных изменениях после каждого возврата после правки. Это позволит группе разработки быстро устранить проблемы сборки и повысит качество вашего кода.
Хотя Team Foundation Server 2005 не содержит встроенного средства для непрерывной интеграции, в нем есть все необходимое для реализации собственного решения непрерывной сборки.
Дополнительную информацию о настройке непрерывных сборок в TFS вы найдете в разделе "Как настроить непрерывную сборку в Visual Studio Team Foundation Server ", где используется решение, представленное группой разработки Microsoft Visual Studio Team System (VSTS) . Решение устанавливает веб-службу, которая работает от имени учетной записи, имеющей доступ к серверу TFS. Team Foundation Server позволяет при возникновении определенного события отправлять сообщение электронной почты или вызвать веб-службу Механизм событий используется решением непрерывной интеграции для регистрации веб-службы, связанной с событием Checkin Event. Всякий раз, когда происходит возврат после правки, веб-служба инициирует запуск Team Build.
Дополнительные ресурсы
TFS вы найдете в разделе "Как настроить плановую сборку в Visual Studio Team Foundation Server " этой книги.Выполнение сборки после каждого возврата - самая простая стратегия непрерывной интеграции, которая обычно обеспечивает самую быструю реакцию. Однако, если возврат после правки производится достаточно часто, она приводит к перегрузке сервера сборок. В этом случае вам следует использовать другой подход, при котором сборка производится после определенного числа возвратов после правки или по истечении определенного времени. Чтобы решить, нужно ли вам использовать скользящую сборку, выясните следующее:
Team Build в минутах;Если длительность сборки больше среднего интервала между возвратами после правки, сборки будут выполняться непрерывно: одна сборка еще не будет завершена, когда уже произойдет следующий возврат после правки, инициирующий следующую сборку. Если возвраты после правки производятся до завершения предшествующей сборки, это негативно отражается на производительности сервера сборок и заблокирует запуск других сборок (например, сборок по расписанию). Определите промежуток времени, в течение которого возвраты после правки производятся особенно часто, и выясните, будет ли непрерывная интеграция оказывать влияние на сборки по расписанию и другие важные командные сборки.
Дополнительные ресурсы
Важно определить интервал скользящей сборки, чтобы обеспечить эффективность процесса. Если интервал между сборками превышает время, за которое выполняется одна сборка, в промежутках между скользящими сборками сервер будет доступен для сборок других типов.
Чтобы определить идеальный интервал времени скользящей сборки, разделите среднюю частоту возвратов после правки на длительность сборки. Например, если сборка занимает 10 минут, а возвраты после правки происходят в среднем раз в 5 минут, можно задать выполнение сборки после двух возвратов после правки, а для времени ожидания выбрать значение 10 минут. Это гарантирует завершение одной сборки до начала следующей. Если нагрузка на сервер сборки возросла, увеличьте эти значения.
Дополнительные ресурсы
MS Build Toolkit Extras для сборки приложений Microsoft .NET 1.1.TFSBuild.proj для изменения параметров сборки.Поскольку Team Build по умолчанию не поддерживает проекты установки, для компиляции проекта установщика и копирования исполняемых файлов в общее место накопления вам следует использовать пользовательский послесборочный шаг.
Дополнительные ресурсы
Team Build по умолчанию не поддерживает приложения .NET 1.1. Производить сборки .NET 1.1 позволяет пакет MSBuild Extras - Toolkit for .NET 1.1 (MSBee) , но при этом потребуется обновление проектов и решений до Visual Studio 2005. Если это невозможно, используйте для компиляции приложений .NET 1.1 пользовательский послесборочный шаг.
Дополнительные ресурсы
Чтобы изменить параметры сборки, например, сервер сборки, место накопления или папку сборки, отредактируйте файл TFSBuild.proj.
В файле TFSBuild.proj содержится множество сведений, необходимых для работы Team Build. Здесь, в частности, задается, должны ли при сборке выполняться статический анализ кода и модульные тесты. Чтобы изменить параметры сборки, отредактируйте файл TFSBuild.proj.
Редактирование файла TFSBuild.proj
При следующем выполнении сборки будет использован файл с внесенными изменениями.
Дополнительные ресурсы
Team Build не поддерживает сборку решений, охватывающих несколько командных проектов. Чтобы выполнить такую сборку, вам следует настроить файл TFSBuild.proj на извлечение для правки кода из других проектов, от которого зависит ваша сборка.
Дополнительные ресурсы
Большие командные сборки могут длиться продолжительное время и занимать значительные ресурсы сервера. Если вы выполняете сборки на командном сервере TFS, это отражается на его надежности, производительности и масштабируемости. Для повышения производительности сборки и снижения нагрузки на уровень приложений рекомендуется выполнять сборки на выделенном сервере.
Дополнительные ресурсы
Team Build.По умолчанию перед извлечением дерева исходного кода, необходимого для сборки, Team Build очищает папку, используемую для выполнения сборки. Кроме того, Team Build удаляет и повторно инициализирует рабочую область, используемую для извлечения исходного кода. Если объем исходного кода, необходимого для сборки, достаточно велик и сервер сборки установлен отдельно от TFS -сервера, извлечение исходного кода может занять много времени. Чтобы повысить производительность, настройте Team Build так, чтобы извлекался только тот исходный код, который изменился с момента последней сборки. Для этого вам потребуется установить несколько значений в файле TFSBuild.proj:
Team Build локальной папки сборки и папки исходных кодов;Team Build рабочей области, используемой при сборке;Team Build на получение из системы управления исходным кодом только изменившихся исходных кодов.Выполнение инкрементной сборки
TFSBuild.proj, связанный со вновь созданным типом инкрементной сборки.TFSBuild.proj следующий раздел перед закрывающим элементом </project> :<PropertyGroup> <SkipClean>true</SkipClean> <SkipInitializeWorkspace>true</SkipInitializeWorkspace> <ForceGet>false</ForceGet> </ PropertyGroup>
Эти настройки приводят к следующим результатам:
SkipClean Значение true этого параметра гарантирует, что локальные папки сборки и исходных кодов не будут очищаться при сборке.SkipInitializeWorkspace Значение true этого параметра означает, что сборка на затронет текущую рабочую область для компьютера сборки.ForceGet Присвоение значения false этому параметру приводит к тому, что при сборке будут извлекаться не все исходные коды рабочей области, а только измененные коды.Дополнительные ресурсы
Team Build " этой книги.Вам следует сократить масштаб сопоставления рабочей области или скрыть папки, которые не нужны при сборке.
Когда вы запускаете Team Build, сервер получает все необходимые ему файлы из системы управления исходным кодом. Список получаемых файлов определяется рабочей областью, которая используется для создания типа командной сборки. Но некоторые файлы, сопоставленные в рабочей области, на самом деле могут быть не нужны. Измените определение рабочей области, чтобы сократить число включаемых папок или скрыть ненужные файлы, чтобы они не извлекались как часть сборки.
Например, по умолчанию новый проект сопоставляется с папкой $/Team-Project. Если все файлы исходных кодов находятся в папке $/TeamProject/ foo/bar/foobar/sources, вам следует сопоставлять только эту папку.
Чтобы WorkspaceMapping.xml, формируемый при создании типа командной сборки и применяемый для определения папок, которые извлекаются при выполнении сборки. Скрывать можно как файлы, так и папки, но предпочтительнее скрывать папки, поскольку сокрытие отдельных файлов может привести к излишним накладным расходам.
Сокрытие папки
WorkspaceMapping.xml.WorkspaceMapping.xml в систему управления исходным кодом.В следующем примере показано, как отменить извлечение из системы управления исходным кодом папки с документацией:
<Mappings> <InternalMapping ServerItem="$/MyTeamProject" LocalItem="c:\projects\ teamproject" Type="Map" /> <InternalMapping ServerItem="$/MyTeamProject/documentation" Type="Cloak" /> </Mappings>
Дополнительные ресурсы
Выполняя сборку, Team Build извлекает исходные коды из системы управления. Если дерево исходных кодов проекта велико, извлечение исходных кодов может оказаться длительным процессом. Если вы собираете только часть проекта, убедитесь, что извлекаются только необходимые файлы.
Большой командный проект, как правило, содержит несколько решений Visual Studio, каждое из которых используется для сборки отдельных частей проекта. Создавая тип командной сборки, вы указываете решение, которое будет использоваться при сборке. Если вы зададите файл решения без указания рабочей области, перед выполнением сборки Team Build извлечет все исходные коды командного проекта.
Чтобы извлечь только необходимые коды, сначала определите рабочую область и создайте в ней сопоставление только для того решения, которое хотите собрать. Затем определите тип командной сборки, выберите определенную вами рабочую область и укажите решение. При таком подходе извлечены будут только исходные коды, определенные в этой рабочей области.
Дополнительные ресурсы
Если сборки несколько типов выполняются на единственном сервере, он может оказаться перегружен. В такой ситуации вам следует подумать о выполнении различных типов сборки на различных серверах.
Сборка может занимать продолжительное время, особенно в больших проектах. Если вы используете непрерывную интеграцию или частые сборки по расписанию, сервер может не справиться с объемом производимых работ.
Для распределения нагрузки установите несколько серверов сборки на различные компьютеры. Назначьте для каждого сервера различные типы сборки, чтобы сбалансировать нагрузку.
Дополнительные ресурсы
Web Deployment Project для веб-приложений.Вообще говоря, следует избегать перекрестных зависимостей между командными проектами. Старайтесь сохранять все связанные и зависимые решения и проекты в одном командном проекте. Это сократит необходимость настройки сценария сборки. Если у вас есть зависимость, используйте ссылки проекта для ее определения или создайте ветвь из общего проекта в ваш проект. Избегайте файловых ссылок, поскольку ими намного труднее управлять.
Дополнительные ресурсы
Чтобы сослаться на другой файл сборки .NET в том же решении Visual Studio, используйте ссылку на проект Visual Studio. Используя ссылки на проект, вы даете Visual Studio возможность выполнять некоторые вещи автоматически, например, синхронизировать конфигурацию сборки ( debug или release ), отслеживать версии, при необходимости повторно собирать компоненты в случае изменения версии файла сборки .NET.
Дополнительные ресурсы
Проекты веб-развертывания связываются с проектами Visual Studio Web Site или Web Application. Они позволяют управлять настройками сборки, а также множеством других настроек, общих для веб-приложений ASP.NET Например, проекты развертывания предоставляют удобный доступ к файлу Web.config, строкам соединения, виртуальным папкам, а также позволяют с легкостью развертывать скомпилированные веб-приложения на сервере хостинга.
Дополнительные ресурсы
Если вы работаете в небольшой группе, вам стоит использовать стратегию единого решения Visual Studio, содержащего все проекты. Эта структура упрощает разработку, поскольку при открытии решения сразу доступен весь код. При такой стратегии также легко устанавливать ссылки, поскольку все они связывают проекты одного решения. Вы вольны использовать и файловые ссылки, чтобы ссылаться на сборки сторонних производителей, например, приобретенные компоненты, которые находятся вне вашего решения.
Дополнительные ресурсы
Если вы работаете в большой группе, вам выгодно использовать несколько решений, каждое из которых представляет определенную подсистему приложения. Разработчики будут применять эти решения для работы над мелкими частями системы без необходимости загрузки всего кода по всем проектам. Проектируйте структуру решения так, чтобы любые проекты, связанные зависимостями, группировались вместе. Это позволит вам использовать ссылки на проекты вместо ссылок на файлы. Подумайте о создании главного решения, которое содержало бы все проекты, для сборки всего приложения.
Примечание Если вы осуществляете сборку при помощи Team Build (на основе MSBuild ), можете создавать решения, не включающие в себя все связанные проекты. При условии что сначала вы сбираете решение целиком, генерируя двоичный файл для каждого решения, MSBuild сможет проследовать по ссылкам в проекты вне решения и произвести успешную сборку. Решения, создаваемые таким образом, не будут собираться при помощи команды сборки из Visual Studio. Они будут работать только с Team Build и MSBuild.
Дополнительные ресурсы
Работая над очень большим решением, для которого требуется несколько десятков проектов, вы рискуете столкнуться с ограничениями масштабируемости. Если это случилось, разбейте приложение на несколько решений, но не создавайте главное решение для всего приложения. Все ссылки внутри каждого решения будут ссылками на проекты. Ссылки на проекты вне решения (например, на библиотеки сторонних разработчиков в другом решении) будут ссылками на файлы. Это означает, что главного решения быть не может. Вместо этого нужно использовать сценарий, в котором учтен порядок сборки решений. Одной из задач обслуживания структуры из нескольких решений является контроль за тем, чтобы разработчики по невнимательности не создали кольцевых ссылок между решениями. Такая структура требует создания сложного сценария сборки и явного сопоставления отношений зависимости. Собрать приложение во всей его полноте из Visual Studio невозможно. Вместо этого вам придется использовать TFS Team Build или непосредственно MSBuild.
Дополнительные ресурсы
Используйте расписание для выполнения сборок на регулярной основе с предсказуемыми интервалами.
Как правило, сборка, выполняемая для группы тестирования и других членов команды, должна производиться безотказно и с фиксированной частотой по времени, чтобы реакция на результаты сборки была своевременной.
Компонент Team Build из комплекта Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) не поддерживает создание сборок по расписанию из пользовательского интерфейса. Однако, чтобы начать сборку в заданное время, вы вольны использовать Microsoft Windows® для запуска утилиты командной строки TFSBuild.
Создание сборки по расписанию
TFSBuild:TfsBuild start <<имя сервера сборки>> << командный проект>> << тип сборки>>
Windows, которая будет запускать пакетный файл с нужным интервалом.Дополнительные ресурсы
Team Build вы найдете в лекции 9 этой книги.TFS вы найдете в разделе "Как настроить плановую сборку в Visual Studio Team Foundation Server " этой книги.Для повышения качества сборки используйте анализ кода. Настройте политику анализа кода, чтобы гарантировать его соответствие определенным стандартам и правилам безопасности, производительности, переносимости,
Чтобы включить анализ кода для типа сборки, установите флажок в мастере Team Build Type при создании нового типа командной сборки или отредактируйте файл TFSBuild.proj для существующего типа командной сборки.
Включение анализа кода в файле TFSBuild.proj
<RunCodeAnalysis> на Always.
<RunCodeAnalysis> на Default.Дополнительные ресурсы
Team Build " этой книги.Выполняйте автоматизированные тесты после каждой сборки, чтобы оперативно получать сведения о ее качестве. Чтобы создать список тестов, связанных со сборкой, необходимо установить Visual Studio Test Edition или Visual Studio Team Suite. Чтобы выполнять автоматизированные тесты на сервере сборки, на нем нужно установить Visual Studio Developer Edition, Visual Studio Test Edition или Visual Studio Team Suite.
Автоматизированные тесты как часть сборки Team Build
Test Manager создайте список тестов.Test Manager заполните новый список тестов, перетаскивая в него тесты из Test View.Дополнительные ресурсы
Когда сборка завершается неудачно из-за ошибок компиляции, для отслеживания ошибки создается рабочий элемент, а сама сборка помечается как неудачная. Однако сборка не считается неудачной, если не удается пройти автоматизированные тесты. Ошибка теста преобразуется в предупреждение, а сборка продолжается.
Иногда нужно, чтобы сборка считалась неудачной, если автоматизированные тесты завершаются с ошибкой. Также может понадобиться, чтобы для отслеживания неудачного выполнения теста автоматически создавался рабочий элемент.
Настройка сбоя сборки при завершении теста с ошибкой
Microsoft.TeamFoundation.Build.targets из папки Program Files\MSBuild\Microsoft\VisualStudio\v8.0\TeamBuild.TFSBuild.proj для типа командной сборки, который хотите считать неудачным при завершении теста с ошибкой.RunTestWithConfiguration из файла Microsoft.Team-Foundation.Build.targets в конец файла TFSBuild.proj перед закрывающим тегом </Project> .Измените атрибут ContinueOnError с true на false.
Примечание Вам доступны две задачи тестирования. Измените задачу серверной сборки, чтобы изменить поведение сборок только на сервере сборки. Задача клиентской сборки используется при выполнении сборки на компьютере разработчика.
Если вы хотите создать рабочий элемент при неудачном завершении сборки, измените RunTestWithConfiguration, добавив элемент OnError перед закрывающим тегом </Target> элемента OnError:
<OnError ExecuteTargets="CreateWorkItem;">
Если вы хотите, чтобы сборка всегда считалась неудачной при завершении теста с ошибкой, измените непосредственно Microsoft.TeamFoundation. Build.targets. Это повлияет на поведение всех типов командной сборки.
Рекомендованное выше решение легко реализуется, но нет гарантии, что оно будет работать в будущих версиях .
Дополнительные ресурсы
Если работа Team Build завершается с ошибкой, для отслеживания этой ошибки автоматически создается рабочий элемент. По умолчанию ему назначен статус "Active", а заголовок информирует о том, что произошла ошибка сборки. Вы должны назначить этот рабочий элемент ответственному разработчику или руководителю сборки, чтобы исправить ошибку и разрешить проблему.
Задача сборки в TFSBuild.proj, определяющая этот рабочий элемент, выглядит следующим образом:
<!-Создание рабочего элемента для сбоя сборки -->
<CreateNewWorkItem BuildId="$(BuildNumber)" Description="$(WorkItemDescription)"
TeamProject="$(TeamProject)"
TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
Title="$(WorkItemTitle)" WorkItemFieldValues="$(WorkItemFieldValues)"
WorkItemType="$(WorkItemType)" ContinueOnError="true" />
Чтобы настроить созданный рабочий элемент по себя (например, назначить определенного разработчика, установить степень серьезности или приоритет), измените поле WorkItemFieldValues.
Дополнительные ресурсы
В этом разделе
Области и итерации
Политики возврата после правки
Шаблоны процесса
MSF Agile в несложных проектах, допускающих неформальный подход.MSF CMMI в проектах, требующих более формального подхода или соответствия стандартам CMMI.Группы безопасности и разрешения
Командные проекты
Рабочие элементы
QoS.Microsoft Excel для массового редактирования рабочих элементов.Используйте области ( area ) командного проекта для упорядочения задач, ошибок, требований и других рабочих элементов. Разрешения для областей позволяют ограничить доступ к различным частям командного проекта.
Области применяются для представления логических или физических компонентов, а подобласти ( sub-area ) представляют отдельные функции. Такая структура помогает упорядочить рабочие элементы и упрощает отслеживание работ по компоненту или функции.
Создание области проекта
Team Explorer.Team раскройте подменю Team Project Settings и выберите команду Areas and Iterations.Areas and Iterations перейдите на вкладку Area.Add a child node на панели инструментов.Rename и введите нужное имя.Area.Остерегайтесь создания слишком сложной структуры. Области позволяют назначать разные разрешения на доступ к рабочим элементам, однако управление этими разрешениями в сложных деревьях связано с дополнительными расходами. Кроме того, сложную структуру с разветвленными разрешениями сложнее копировать в другие командные проекты.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Используйте итерации, чтобы определить, сколько раз в ходе разработки приложения команда будет повторять определенный набор масштабных действий (планирование, выполнение или тестирование). Этот набор должен представлять веху проекта, имеющую четкий критерий завершения, например, готовность функции или компонента.
Создание итерации
Team Explorer.Team раскройте подменю Team Project Settings и выберите команду Areas and Iterations.Areas and Iterations перейдите на вкладку Iteration.Add a child node на панели инструментов.Rename и введите имя.Iteration.Close.Примечание В шаблон процесса MS Agile включено три предопределенных итерации. Вы можете удалить эти итерации, переименовать их или оставить неизменными.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Создайте отдельную итерацию для сценариев и задач, которые до этих пор не были назначены ни одной итерации. Это позволит при планировании итераций легко распознать незавершенные сценарии и задачи.
Создание отдельной итерации
Team Explorer.Team раскройте подменю Team Project Settings и выберите команду Areas and Iterations.Areas and Iterations перейдите на вкладку Iteration.Add a child node на панели инструментов.Close.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.В процессе настройки командного проекта определите продолжительность цикла итерации, исходя из размера и сложности проекта. Учитывайте следующие ключевые моменты:
На практике в большинстве командных проектов работает двухнедельный цикл итерации.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Политики возврата после правки
Сочетая политики анализа и тестирования, вы обеспечите соблюдение стандартов качества кода. Например, встроенная в VSTS политика тестирования обеспечит обязательное проведение специальных тестов перед возвратом кода в системе управления исходным кодом Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) . Также можно настроить политику анализа кода, обеспечив с ее помощью соответствие кода определенным нормам безопасности, производительности, переносимости,
Применяя этот тип политики возврата после правки в дополнение к политикам, направленным на укрепление стандартов и нормативов программирования, вы гарантируете соответствие кода специфическим критериям качества.
Применение анализа кода в командном проекте
Team Explorer щелкните правой кнопкой нужный командный проект, раскройте подменю Team Project Settings и выберите команду Source Control.Check-in Policy, щелкните кнопку Add, а затем выберите и настройте соответствующую политику.Дополнительные ресурсы
Visual StudioTeam Foundation Server " этой книги.Используйте новую стандартную политику возврата после правки Work Item, чтобы заставить разработчиков связывать с возвратом рабочие элементы. В случае ошибки сборки важно уметь определить связь между сборкой, набором изменений, внесенными в исходный код, и рабочими элементами, входящими в этот набор. Это позволяет установить разработчика, ответственного за редактирование данного кода и область проекта, в которой он работает.
Настройка политики Work Items
Team Explorer правой кнопкой мыши щелкните нужный командный проект, раскройте подменю Team Project Settings и выберите команду Source Control.Check-in Policy.Add, а затем выделите и настройте политику Work Item.Дополнительные ресурсы
Проект, над которым вы работаете, может требовать соблюдения определенных стандартов программирования, не охватываемых статическим анализом кода и существующими политиками возврата после правки. Например, в проекте может требоваться полное отсутствие в коде символов табуляции или обязательное добавление комментария при возврате кода. В подобных случаях создавайте новые политики возврата.
Применение политики для соблюдения стандартов программирования
Team Explorer правой кнопкой мыши щелкните нужный командный проект, раскройте подменю Team Project Settings и щелкните команду Source Control.Check-in Policy и щелкните кнопку Add.Add Check-in Policy установите параметр Code Analysis и щелкните OK.Code Analysis Policy Editor задайте параметр Enforce C/C++ Code Analysis (/analyze), Enforce Code Analysis For Managed Code или оба, если ваш проект содержит сочетание управляемого и неуправляемого кода.API, или написать политику для соблюдения стиля программирования, принятого в вашей команде, задав, например, как расставлять фигурные скобки в исходном коде.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Система управления версиями Team Foundation Server не запрещает перекрывать политики возврата после правки. Однако вы можете выполнить следующие действия, чтобы при помощи службы Team Foundation Server из Team Foundation Core Services API выявить факт перекрытия политики: напишите метод Notify, проводящий разбор свойств набора изменений и реагирующий на факт перекрытия. Можно также обнаружить перекрытие политики, просмотрев историю набора изменений вручную.
Дополнительная информация
MSF Agile в несложных проектах, допускающих неформальный подход.MSF CMMI в проектах, требующих более формального подхода или соответствия стандартам CMMI.Используя методику разработки через тестирование ( Test-Driven Development, TDD ) или другие гибкие методики, работайте с шаблоном процесса MSF for Agile Software Development (MSF Agile) . Он представляет собой облегченный подход к гибким проектам разработки ПО. Его следует использовать, если вы не слишком нуждаетесь в дополнительных функциях усовершенствования процесса из шаблона MSF CMMI.
Шаблон процесса MSF Agile легко редактировать, изменяя его в соответствии с требованиями вашего процесса.
Дополнительные ресурсы
MSF Agile вы найдете в лекции 13 этой книги.Visual Studio Team Foundation Server " этой книги.При использовании более формального подхода к разработке ПО, направленного на усовершенствование существующего процесса, применяйте шаблон процесса MSF для CMMI Software Development. Его также можно изменить в соответствии с требованиями вашего процесса.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Многим командам не требуется поддержка всех разделов стандартного командного проекта. Например, многие команды довольствуются системой управления исходным кодом и не собираются использовать портал Microsoft Office SharePoint®. В подобных случаях шаблоны командных проектов можно изменять, удаляя ненужные разделы. В шаблоне всегда должны присутствовать разделы Group Permissions и , от остальных же можно смело избавляться.
Чтобы создать минимальный шаблон, при помощи диспетчера Process Template Manager загрузите шаблон на локальный компьютер, отредактируйте его, удалив ненужные разделы, а затем выгрузите шаблон обратно на сервер.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Проект, над которым вы работаете, может не соответствовать стандартным шаблонам процесса, поставляющимся с Microsoft Visual Studio Team System (VSTS) . Вам может понадобиться другой тип рабочего элемента или иная методология процесса. В таком случае вам следует отредактировать существующий шаблон процесса. Выберите шаблон, максимально близкий к вашим требованиям, и измените его в соответствии с этими требованиями. Как правило, настройке подлежат следующие области шаблона:
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Когда вы создаете новый проект в Team Foundation Server, независимо от выбранного шаблона в нем создается четыре стандартные группы. По умолчанию каждая из этих групп обладает набором определенных разрешений, которые ограничивают полномочия членов этих групп. Четыре стандартные группы таковы:
Project Administrator - администратор проекта;Contributor - участник проекта;Reader - читатель;Build Services - службы сборки.Чтобы обеспечить выполнение специфических требований вашей организации, создайте собственные группы безопасности. Это эффективный способ предоставления группе пользователей конкретного набора разрешений. Убедитесь, что вы предоставляете группе лишь необходимый минимум разрешений, добавляйте в нее только тех пользователей или их группы, которым нужны эти разрешения.
Руководствуйтесь следующими соображениями:
AD только на уровне сервера;TFS, а не группы AD ;Дополнительные ресурсы
Определите членов команды, которые будут заняты в проекте, и их роли. Распределите членов команды по группам TFS, группам уровня сервера и группам безопасности. Помните, что в группу безопасности следует добавлять только тех участников, которые действительно нуждаются в разрешениях, предоставляемых данной группой.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Если вы намерены переносить из версии в версию не только исходный код, но и рабочие элементы, а также другие объекты TFS, используйте один командный проект на все приложение. Все папки TFS при этом будут автоматически переноситься на следующий выпуск. Когда все будет готово к выпуску новой версии, вы сможете создать для ее изоляции ветвь внутри проекта.
Используя один проект на все приложение, помните о следующих ключевых моментах:
TFS. К тому же, вы рискуете выйти за пределы масштабируемости.Дополнительные ресурсы
Если вы готовы с каждым выпуском начинать все заново, не перенося рабочие элементы и другие папки TFS, создавайте отдельный проект на каждый выпуск. Это позволит вам изменять схемы рабочих элементов, последовательность операций, политики возврата после правки и прочие элементы, не затрагивая при этом предыдущий выпуск. Это особенно полезно, если он будет сопровождаться отдельной командой, например, группой поддержки, порядок работы которой может отличаться от основной команды разработчиков.
Используя новый проект для каждого выпуска, помните о следующих ключевых моментах:
TFS из одного проекта в другой нелегко. Рабочие элементы можно копировать в другой проект только по одному. Если вы хотите копировать наборы рабочих элементов, вам придется написать собственную утилиту.TFS и выйдете за пределы масштабируемости.Team Foundation Server способна вместить около 500 проектов на основе шаблона процесса MSF Agile или до 250 проектов на основе шаблона MSF CMMI. Если вы создаете собственный процесс или настраиваете существующий, помните, на масштабируемость сервера наибольшее влияние оказывает схема рабочих элементов. Чем сложнее схема, там меньше проектов сможет поддерживать сервер.Дополнительные ресурсы
Создавая командные проекты, проанализируйте стандартные группы безопасности, созданные процессом, и при необходимости создайте собственные группы с соответствующими разрешениями. Добавьте участников проекта в соответствующие группы, внимательно следя за тем, чтобы каждый из них получал разрешения на доступ только к тем ресурсам, которые ему нужны.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Создавая структуру дерева исходного кода, убедитесь, что она поддерживает ветвление. Создайте отдельные папки для кода и для других ресурсов проекта. Если в будущем потребуется изолированная разработка, вы с легкостью выполните ветвление папки исходного кода. Убедитесь в наличии отдельных папок для каждого компонента внутри папки исходного кода, что позволит при необходимости выполнять частичное ветвление.
Разделяйте с помощью папок прочие категории объектов, например, модульные тесты, зависимости библиотек и т.п. Это позволит при ветвлении включать или исключать их по мере надобности.
Ниже приведен пример дерева исходного кода с поддержкой ветвления: Main - контейнер, содержащий все объекты, необходимые для отправки проекта заказчику.
Source - контейнер, содержащий все объекты, необходимые для выполнения сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, используемого совместно с другими проектами.Unit Tests - контейнер для модульных тестов.Lib - контейнер для двоичных зависимостей.Docs - контейнер для документации, поставляющейся с проектом.Installer - контейнер для исходного кода и двоичных файлов программы установки.Builds - контейнер для сценариев Team Build.Tests - контейнер с результатами тестов, проводимых тестовой командой.Дополнительные ресурсы
QoS.Microsoft Excel для массового редактирования рабочих элементов.Создавайте и записывайте сценарии проекта в начале работы над ним. Это позволит вам составить полную картину проекта и в дальнейшем поможет отслеживать продвижение к намеченной цели. В ходе разработки вы вольны модифицировать существующие сценарии или добавлять новые согласно накопленной информации.
Создание сценариев в начале проекта
project back log, PBL ), который содержит требования, выдвинутые различными заинтересованными сторонами (заказчиками, бизнес-аналитиками, конечными пользователями и руководителями производства) и определите область действия сценариев вашего проекта.Team Explorer разверните узел проекта, щелкните правой кнопкой папку Work Items, раскройте подменю Add Work Item и выберите команду Scenario .New Scenario введите описание сценария. Убедитесь, что для параметра Iteration задано значение 999.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Определите требования QoS для каждого сценария, над которым будет вестись работа в цикле итерации. Это поможет определить критерий приемки сценария. Требования к QoS основываются на целях и требованиях проекта, а также на документах спецификации, если таковые имеются.
Определение требований QoS
Work Items вашего проекта, раскройте подменю Add Work Item и выберите команду Quality of Service Requirements.New Quality of Service Requirements введите следующие сведения:Type - производительность, масштабируемость, нагрузка или безопасность.Iteration укажите текущий цикл итерации.Links свяжите QoS с отдельным сценарием, чтобы облегчить отслеживание.QoS.QoS для каждого уровня или типа требования. Помните, что у каждого сценария может быть несколько требований QoS.QoS для всех сценариев, вызывающихся во время отдельного цикла итерации.Важно! Позже вы сможете разбить требования QoS на тестовые задачи.
Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Планируя итерации, разделяйте сценарии на блоки, а блоки - на задачи. Убедитесь, что создаваемые задачи ограничены и управляемы. Задача не должна длиться более одного-двух дней. Если продолжительность задачи превышает два дня, ее следует разбить на меньшие подзадачи. Это положительно сказывается на гибкости расписания и управляемости проекта.
Разделение сценариев на управляемые задачи
TFS в качестве рабочих элементов, выполнив следующие действия:Team Explorer щелкните правой кнопкой папку Work Items в узле вашего проекта, раскройте подменю Add Work Item и выберите команду Task.New Task укажите следующие сведения:Discipline присвойте значение Development.Iteration присвойте номер текущего цикла итерации.Links свяжите задачу с конкретным сценарием для облегчения отслеживания. Здесь же можно ввести критерий завершения задачи.Assigned to укажите разработчика, работающего над задачей.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Определив задачи разработки, включите в них критерии приемки, позволяющие разработчику принять решение о завершении задачи. В зависимости от используемого шаблона процесса критерий можно реализовать двумя различными способами:
MSF Agile При использовании MSF Agile без формального требования типа рабочего элемента, проще всего включить критерий приемки в сам рабочий элемент в виде текста. Создайте маркированный список и по мере надобности добавляйте в него новые сведения.MSF CMMI Этот шаблон позволяет задействовать для определения критериев приемки задачи формальные требования. Первым шагом является определение требований. Далее создается задача для их реализации. Между задачей и требованиями устанавливается связь, которая повышает возможности отслеживания и позволяет разработчику проверять результаты работы на соответствие требованиям.Критерий приемки чаще всего определяется как требование к интерфейсу в виде мини-сценария или требования QoS. После успешного прохождения приемки разработчик помечает задачу как завершенную и переходит к следующей.
Дополнительные ресурсы
Создавая новые рабочие элементы (задачи, ошибки, проблемы или требования QoS ), не забывайте связывать их со сценариями, которые привели к их появлению. Это гарантирует, что в основе каждого рабочего элемента лежит конкретный сценарий, и помогает контролировать работу над сценарием в ходе итераций.
Связывание задач, ошибок, проблем и требований QoS со сценариями
New work item перейдите на вкладку Links и щелкните кнопку Add.Add Link в разделе Link Type выберите вариант Scenario .Browse, чтобы найти сценарии в командном проекте.OK.Comment введите комментарий, поясняющий связь сценария с рабочим элементом. Поле Description заполняется автоматически.OK.Дополнительные ресурсы
Visual Studio Team Foundation Server " этой книги.Система Team Foundation Server не поддерживает массового редактирования рабочих элементов. Вам приходится редактировать каждый элемент индивидуально. Если вам все-таки нужно отредактировать много рабочих элементов за короткое время, например, за время совещания, вам поможет Microsoft Office Excel®. Экспортируйте рабочие элементы из TFS в Excel, модифицируйте, а затем снова импортируйте в TFS для сохранения правок.
Создание списка рабочих элементов в Excel с последующим редактированием
Microsoft Office Excel и выберите в меню Team команду New List.Connect to a Team Foundation Server укажите сервер, к которому следует выполнить подключение, или щелкните Servers и введите информацию о сервере.Team Projects выберите на сервере Team Foundation Server командный проект, с которым хотите работать. Документ будет связан с этим командным проектом.OK.Query List, а затем укажите запрос в раскрывающемся списке Select a Query.Publish в меню Team.Дополнительные ресурсы
В этом разделе
Администрирование
Создание и настройка
Просмотр
Если вы хотите, чтобы у пользователя была возможность разворачивать отчеты, убедитесь, что он включен в роль сервера отчетов. Эта роль предопределена в Report Services и предназначена для пользователей, осуществляющих развертывание и управление отчетами и подключениями к источникам данных на веб-сервере. Чтобы пользователь мог разворачивать отчеты на сервере отчетов системы Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) , он должен быть членом этой роли.
Team Explorer щелкните правой кнопкой папку Reports вашего командного проекта и выберите Show Report Site.Properties.Security.New Role Assignment.Group or user name введите имя пользователя или группы, которую хотите добавить в роль Content Manager .Content Manager .OK.Панель отчетов позволит вам и вашей команде получить на одной странице доступ ко всей важной информации о проекте. Стандартная страница портала Microsoft Office SharePoint® шаблона Microsoft Solution Framework (MSF) для проектов MSF Agile содержит один отчет и ссылки на остальные. Чтобы создать единое хранилище для информации по проекту, измените страницу портала проектов MS Agile или MSF CMMI, чтобы она включала столько отчетов, сколько вам нужно.
Функциональная панель отчетов должна, вероятно, включать следующие отчеты:
Вы вольны добавлять новые отчеты на страницу портала SharePoint. Для этого в каждый отчет, который вы хотите отобразить на странице, нужно добавить компонент Report Viewer Web Part.
Report Viewer Web Part на сервер отчетов. Для этого используются инструмент stsadm.exe и файл RSWebParts.cab, которые входят в дистрибутив Microsoft Office SharePoint и Report Services, например:
STSADM.EXE -o addwppack -filename "C:\ Program Files\Microsoft SQL Server\90\Tools\Reporting Services\SharePoint\RSWebParts.cab" -globalinstallSTSADM.EXE находится в папке C:\Program Files\Com-mon Files\Microsoft Shared\web server extensions\60\BIN.RSWebParts.Cab находится в папке C:\ Program Files\Microsoft SQL Server\90\Tools\Reporting Services\SharePoint.Team Explorer щелкните правой кнопкой ваш проект.Show Project Portal.Modify Shared Page.Browse и щелкните Add Web Parts.Virtual Server Gallery.Web Part List выберите вариант Report Viewer.Add.http ://<сервер отчетов>/re-ports.<мой проект>>/Quality Indicators.Если URL сервера отчетов или имя целевой папки указаны неверно, отчет не будет развернут на сервере отчетов. Выполняя развертывание отчета из Visual Studio 2005, укажите URL сервера, на который следует выполнить развертывание, и имя командного проекта, частью которого является данный отчет. Адрес URL сервера отчетов, на котором будет произведено развертывание, выглядит так: http://TeamServerName/СерверОтчетов, где СерверОтчетов - конечная точка веб-службы Report Server.
Укажите имя командного проекта в поле TargetReportFolder диалогового окна свойств развертывания с учетом регистра. При ошибке в регистре отчет будет развернут, однако не будет отображаться в списке отчетов командного проекта в Team Explorer.
Дополнительные ресурсы
Чтобы создавать снимки данных проекта через регулярные промежутки времени, используйте историю отчета. Эти снимки можно просматривать через какое-то время, чтобы увидеть тенденции развития проекта. Кроме того, они позволяют сохранить важные информационные точки проекта.
Создание запланированного снимка отчета
Properties.History.Создав расписание, вы сможете просматривать отчеты на вкладке History этого отчета. Там же можно создать снимок вручную.
Редактирование отчетов осуществляется при помощи инструмента Microsoft SQL Server™ 2005 Reporting Services Designer, входящего в Visual Studio (Business Intelligence Development Studio) из клиентского комплекта SQL Server 2005.
Настройка отчета позволяет расширить его функциональность, не создавая при этом нового отчета. Если нужный отчет похож на уже существующий, выполните настройку существующего отчета - это сэкономит ваше время. Для настройки существующего отчета вам придется экспортировать его с сервера отчетов, добавить в существующий проект отчета Visual Studio, а затем после внесения изменений выполнить повторное развертывание на портале отчетов.
Примечание Вы, конечно, можете использовать построитель отчетов ( Report Builder ), который имеется на сайте отчетов команды, но этот инструмент не очень хорошо поддерживается сценариями отчетов Visual Studio, поэтому работать с ним не рекомендуется.
Дополнительные ресурсы
Visual Studio 2005 Team Foundation Server " этой книги.По умолчанию веб-служба хранилища запускается для генерирования данных отчета ежечасно. Готовя отчет, запускайте службу вручную, чтобы в отчете с гарантией содержались актуальные данные.
Ручной запуск службы хранилища
Internet Information Services (IIS) Manager.Team Foundation Server.Warehouse\v1.0. Отобразится страница со списком действий, доступных по отношению к хранилищу.warehousecontroller.asmx и выберите команду Browse.Run, затем Invoke. Откроется второе окно обозревателя, отображающее состояние запроса выполнения. В нем должно быть отображено значение true.GetwareHouseStatus и щелкните Invoke.Отобразится текущее состояние веб-службы хранилища. Значение idle указывает, что запуск службы был выполнен.
Дополнительные ресурсы
В этом разделе
Доступ к системе управления версиями
Team Foundation Power Tools: восстановление отложенных изменений.Team Foundation Power Tools: откат изменения.Team Foundation Power Tools: автономная работа.Team Foundation Power Tools: получение набора изменений.Team Foundation Power Tools: удаление невозвращенных правок.Администрирование
Ветвление, метки, слияние
Candidate или Preview.Возврат после правки и политики возврата
Получение и блокировка кода
lock.Зависимости
local = true.URL.Распределенная и удаленная разработка
executionTimeout соответственно размеру файла и ширине канала.Переход из других версий
Team Foundation Server Source Control при помощи VSS Converter.Team Foundation Server Source Control из других систем управления исходным кодом.Управление проектами и рабочими областями
Windows.Отложенные правки
Team Foundation Power Tools: восстановление отложенных изменений.Team Foundation Power Tools: откат изменения.Team Foundation Power Tools: автономная работа.Team Foundation Power Tools: получение набора изменений.Team Foundation Power Tools: удаление невозвращенных правок.Для операций, не предусмотренных пользовательским интерфейсом Visual Studio, а также для задач, выполняемых по расписанию, удобны инструменты командной строки, например, Team Foundation Power Tools ( Tfpt.exe ), которые включены в комплект Team Foundation Server (TFS) , но загружаются отдельно. С их помощью вы можете настраивать выполнение задач по расписанию, используя планировщик заданий Windows (.
Чтобы с гарантией задать нужные пути и другие переменные окружения, запускайте Tf.exe из окна командной строки Visual Studio или выполните пакетный файл Vsvars32, который обычно располагается в папке Диск:\ Program Files\Microsoft Visual Studio 8\Common7\Tools. Инструмент Tf.exe поддерживает большинство команд системы управления исходным кодом, включая Checkin, и Undo.
Ниже указаны наиболее распространенные операции, выполняемые из командной строки с помощью Tf.exe:
tf get.tf add.tf checkout .tf checkin.Извлечение определенного набора изменений с сервера: tf get /version. Некоторые операции можно выполнить только из командной строки:
tf workspace /delete.tf undo.tf lock.tf label.tf merge.Дополнительные ресурсы
Инструментарий Team Foundation Power Tools (TFPT) обладает функциональными возможностями, недоступными в Visual Studio. Например, он поддерживает работу в автономном режиме, позволяет отменять возвращенные правки из набора изменений, а также восстановить отложенные изменения.
Операция возврата отложенных изменений ( unshelve ), поддерживаемая TFS, не допускает слияния отложенных изменений ( shelved change ) и локальных изменений ( local change ). Если в элемент локальной рабочей области внесено незафиксированное изменение-правка и кроме того с ним связано отложенное изменение-правка, TFPT позволяет выполнить трехстороннее слияние изменений.
Эта команда запускается из командной строки при помощи Tfpt.exe.
Дополнительные ресурсы
Вообще, система TFS напрямую не позволяет отменить возврат набора изменений, но вы можете попытаться отменить любые изменения, сделанные в конкретном наборе, при помощи команды rollback. Отменить удастся не все изменения, но в большинстве сценариев команда rollback работает. Эта команда запускается из командной строки при помощи Tfpt.exe.
Дополнительные ресурсы
В целом, автономный режим в TFS не поддерживается. Чтобы работать автономно, выполните описанные ниже действия в строго заданной последовательности:
TFPT online.Далее приводится подробное описание каждого из этих шагов.
Важно! Во время автономной работы нельзя переименовывать файлы.
Вручную снимите флаги "только для чтения".
По умолчанию, все файлы, извлеченные для правки, доступны только для чтения. При отсутствии подключения к серверу вы должны вручную снять флажки "только для чтения" с файлов, прежде чем редактировать или удалять их. Щелкните файл правой кнопкой в окне проводника Windows, выберите команду Свойства (Properties) , сбросьте флажок Только чтение (Read-only) и щелкните OK. То же действие можно выполнить с помощью команды DOS attrib -r.
Отредактируйте файлы.
Теперь вы можете редактировать любые файлы, с которых сняли метку "только для чтения".
Добавьте или удалите файлы.
Вы можете добавлять или удалять файлы, с которых сняли метку "только для чтения". Не переименовывайте файлы, поскольку инструмент TFTP online не в состоянии отличить переименование от удаления старого файла и добавления нового.
Примечание Выявление удаленных файлов - процедура, требующая довольно много времени, поэтому на необходимость ее выполнения в команде TFPT online указывает специальный параметр, который нужно задавать вручную.
Запустите команду TFPT online.
Вернувшись в оперативный режим, введите в командной строке TFTP online. Эта команда проверит рабочую область на предмет наличия записываемых файлов и установит, какие изменения следует отправить на сервер. Если вы удалили какие-либо файлы, задайте в команде параметр /delete, чтобы команда зафиксировала их. Затем инструмент отобразит окно, в котором можно выбрать изменения для переноса в рабочую область.
Дополнительные ресурсы
Команда TFPT GetCS позволяет получить список всех элементов, содержащихся в наборе изменений на момент его создания. Это полезно, например, если вы хотите получить изменение, возвращенное вашим коллегой, но не можете обновить до последней версии всю рабочую область.
Эта команда запускается из командной строки при помощи Tfpt.exe.
Дополнительные ресурсы
Используйте инструмент TFPT, чтобы удалить из файлов невозвращенные правки. Команда TFPT Undo удаляет невозвращенные правки из файлов, редактирование которых не было выполнено. Это полезно, когда вы извлекаете для редактирования большое количество файлов, но реально изменяете лишь некоторые из них. Вы можете отменить правки в неизмененных файлах, запустив инструмент TFPT UU. Он сравнивает хеши файлов в локальной рабочей области с хешами на сервере, что позволяет установить, был ли файл на самом деле изменен.
Эта команда запускается из командной строки при помощи Tfpt.exe.
Дополнительные ресурсы
Если ветвь предназначена для сопровождения, например, после выхода в свет очередной версии ПО, отключите наследование разрешений, чтобы изолировать дерево. После этого можно предоставить отдельным пользователям разрешения PendChange и Checkin для внесения исправлений.
Дополнительные ресурсы
Подробнее об удалении разрешений читайте в статье "How to: Remove Access to Source Control Files" по адресу http://msdn2.microsoft.com/en-us/library/ ms400718(VS.80).aspx.
Вы можете запретить возврат после правки в дерево исходного кода разработчикам, которым еще не достаточно доверяете, например, новичкам или стажерам. Прежде чем отключить наследование, убедитесь, что задали все нужные разрешения (включая разрешения для собственной учетной записи). Эти разработчики не смогут возвращать изменения напрямую, но им можно будет делать отложенные изменения и откладывать их при помощи команды shelve. Более опытный разработчик затем просмотрит эти изменения и при необходимости передаст в исходный код.
Дополнительные ресурсы
Подробнее об удалении разрешений читайте в статье "How to: Remove Access to Source Control Files" по адресу http://msdn2.microsoft.com/en-us/library/ ms400718(VS.80).aspx.
Candidate или Preview.Присваивайте метки повседневным сборкам, чтобы можно было быстро просмотреть и извлечь набор файлов, использованных в той или иной сборке. Система TeamBuild автоматически присваивает метку набору файлов, связанному с каждой создаваемой ей сборкой. Формат меток TeamBuild таков: "ТипВыпуска_НомерСборки", например, "Releasex86_20070226.1".
Хотя каждая сборка помечается автоматически, вам, возможно, потребуется создать собственные метки для сборок, к которым вы можете вернуться в дальнейшем, в частности:
Выпуская сборку, которую вам придется сопровождать, используйте вместо меток ветвление, чтобы изолировать последующие работы по сопровождению. Позже вы сможете выполнить слияние этой ветви и всех ее исправлений с главным деревом исходного кода.
Чтобы найти существующую метку, откройте меню File, разверните подменю Source Control, Label и щелкните Find Label. Найдя метку, вы можете изменить или удалить ее в диалоговом окне Find Label.
Дополнительные ресурсы
Создайте ветвь с исходным кодом, использованным при создании выпуска, поддержка которого осуществляется в настоящее время. Это позволит применять исправления и обновления к этой версии ПО, не влияя на продолжающуюся разработку базового исходного кода в главной ветви. При этом возможно выполнение стабилизационных слияний из ветви сопровождения в главную ветвь до выхода очередного выпуска продукта.
Далее приведен пример структуры ветвей после создания ветви Maintenance для поддержки вышедших версий ПО:
Main - ветвь интеграцииSourceReleases - контейнер для ветвей сопровожденияRelease 1 - ветвь сопровожденияSourceДополнительные ресурсы
Слияние в обозревателе Source Control возможно только по существующим путям ветвления. Из командной строки вы можете выполнять слияние без основы по другим путям, однако такой тип слияния менее гибок, что приводит к большему количеству конфликтов в текущем слиянии и будущих слияниях. Выполняя слияния, имейте в виду следующее. Слияние вдоль иерархии, от дочерней папки к родительской и наоборот, приводит к меньшему количеству конфликтов, чем слияние поперек иерархии. Кроме того, иерархия ветвей, основанная на родительских и дочерних ветвях, может отличаться от физической структуры исходного кода на диске. Например:
Development - ветвь разработкиMain - ветвь интеграцииReleases - контейнер для ветвей выпусковRelease 1 - ветвь выпускаMainDevelopment Release 1Дополнительные ресурсы
Выполняйте ветвление на уровне, положение которого обеспечит компили-руемость создаваемой ветви. Пример ветвления в дереве исходного кода:
Main - контейнер для всех ресурсов, требующихся при создании продукта.Source - контейнер, содержащий все, что нужно для сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, общего с другими проектами.Unit Testsv - контейнер для модульных тестов.Libv - контейнер для зависимостей двоичных файлов.Docs - контейнер для документации, поставляемой с продуктом.Installer - контейнер для исходного кода и двоичных файлов программы установки.Tests - контейнер для результатов тестирования.Ветвление следует выполнять на уровне папки Source. Благодаря этому новая ветвь будет содержать все файлы исходного кода и конфигурации.
Дополнительные ресурсы
Не увлекайтесь глубоким ветвлением. Это приводит к увеличению времени, требующегося на перенос изменений из дочерней ветви в родительскую ветвь. Пример ветвления в дереве исходного кода:
Development - контейнер для ветвей разработки.Main - ветвь интеграции.Source.При слиянии вдоль иерархии ветвей происходит меньше конфликтов. Поэтому при переносе изменений из вложенной ветви второго уровня в ветвь Main сначала выполняется перенос во вложенную ветвь первого уровня и ветвь разработки и лишь после этого - перенос в Main. Каждый из переносов требует времени на завершение, разрешение конфликтов, сборку и тестирование. Умножьте это время на количество уровней ветвей, имеющихся в созданной вами структуре.
Дополнительные ресурсы
Выполняйте ветвление только тогда, когда ваша команда столкнется с реальной необходимостью одновременной работы над одним и тем же набором файлов. Если вы не уверены в необходимости ветвления, пометьте сборку и создайте ветвь от этой сборки позднее. Слияние ветвей может оказаться дорогостоящим мероприятием, особенно, если между ними существуют значительные различия.
Для выполнения слияния и разрешения конфликтов требуется один или несколько разработчиков. После слияния исходный код должен быть тщательно протестирован, так как при разрешении конфликтов часто делаются ошибки, способные дестабилизировать сборку.
Особенно сложно проводить слияние поперек иерархии ветвей. При этом требуется ручная обработка многих конфликтов, которые в других обстоятельствах могли бы обрабатываться автоматически.
Дополнительные ресурсы
По возможности, избегайте слияний без основы. Проводя подобные слияния, TFS не располагает информацией о связях файлов и папок в ветвях, слияние которых выполняется. Как правило, это приводит к большему количеству конфликтов слияния и дополнительным конфликтам в предстоящих слияниях.
Структурируйте деревья ветвей таким образом, чтобы слияния выполнялись только вдоль иерархии (вверх и вниз по дереву), но не поперек. Ветвление поперек иерархии как раз и требует слияния без основы.
Выполняя слияние, имейте в виду следующее. Слияние вдоль иерархии, от дочерней папки к родительской и наоборот, приводит к меньшему количеству конфликтов, чем слияние поперек иерархии. Кроме того, иерархия ветвей, основанная на родительских и дочерних ветвях, может отличаться от физической структуры исходного кода на диске. Например:
Development - ветвь разработки.Main - ветвь интеграции.Releases - контейнер для ветвей выпусков.Release 1 - ветвь выпуска.Main.Development.Release 1.Дополнительные ресурсы
Вместо слияния отдельных изменений между ветвями (выборочное слияние) проведите полное слияние всей ветви. Выбирать отдельные изменения в ветви для слияния может быть и удобно, однако, если набор выборочных изменений попадает в середину диапазона будущего слияния, его слияние будет выполнено повторно. Это может привести к дополнительным конфликтам.
Это особенно актуально при поведении слияния из командной строки с использованием параметра \discard. При этом может быть выбран отмененный набор изменений, попавший в середину диапазона будущего слияния.
Дополнительные ресурсы
Не задерживайтесь со слияниями ветвей, особенно когда команды работают над одним выпуском, но в изолированных ветвях. Это обеспечит совместимость изменений.
Расписание слияний зависит от сложности структуры ветвей, а также от потребностей команды разработчиков. В структуре ветвей
Development - папка для изолированных ветвей разработки.External - ветвь внешней зависимости.Team 1 - ветвь команды.Team 2 - ветвь команды.Feature A - ветвь функции.Feature B - ветвь функции.Feature C - ветвь функцииMain - ветвь интеграции.Releases - папка для ветвей выпуска.Release 2 - ветвь выпуска.Safe Keeping - папка для хранения архивных копий ветвей.Release 1 - архивная ветвь.Дополнительные ресурсы
Начинайте новый проект с создания папки, обычно Main, в папке командного проекта. Поместите в эту папку весь исходный код главной ветви. Если вам потребуется создать новую ветвь, сделайте это непосредственно из папки Main.
Далее показан пример типичной структуры ветвления:
Development - папка для изолированных ветвей разработки, ответвление MainFeature A.SourceFeature B.SourceMain - ветвь компоновки и сборки.Source.Releases - папка для ветвей выпусков, ответвление Main.Release 1 - ветвь сопровождения.SourceДополнительные ресурсы
Перед выполнением слияния используйте параметры \candidate или \pre-view, чтобы проверить результаты слияния. Хотя эта возможность доступна только из командной строки, пренебрегать ею не следует. Она позволяет узнать, слияние каких файлов и версий будет выполнено при запуске команды слияния. С ее помощью, например, можно удостовериться, что реальный масштаб слияния не превышает ваши ожидания и что вы правильно оценили все последствия предпринимаемого слияния. При выполнении больших слияний отчет о слиянии поможет вам разделить работу между разработчиками или группами.
Для предварительного просмотра результатов слияния запустите инструмент командной строки Tf.exe с командой merge и параметрами preview или candidate, например:
Tf merge main/source development/feature/source /preview
Параметр preview позволяет предварительно просмотреть результаты слияния, а параметр candidate выводит список всех наборов изменений исходного кода, слияние которых еще не выполнено. В список включаются идентификаторы наборов изменений, перенос которых еще не состоялся, и другая общая информация об этих наборах.
Дополнительные ресурсы
Когда частью процесса слияния являются переименованные файлы, обращайте особое внимание на рекомендуемый системой путь и в случае необходимости внесите в него изменения. Все переименованные файлы отмечаются как конфликты. В процессе слияния переименованного объекта алгоритм слияния TFS пытается найти наилучший конечный путь. Иногда путь по умолчанию оказывается не лучшим вариантом, поэтому вам следует проверить его перед передачей файла.
Дополнительные ресурсы
Выполняйте слияние с осторожностью - допущенные при этом ошибки могут привести к нестабильности сборки.
Дополнительные ресурсы
Возвращайте результаты слияния, прежде чем выполнить другое слияние, использующее те же файлы. Завершив первое слияние, скомпилируйте исходный код и убедитесь в успешном завершении модульных тестов, после чего возвратите отложенные изменения. Далее начните второе слияние, придерживаясь той же процедуры.
Выполнение слияний по отдельности упрощает процесс и позволяет при необходимости отменить изменения.
Дополнительные ресурсы
После слияния убедитесь, что код компилируется, а соответствующие тесты успешно выполняются, и лишь потом возвращайте файл слияния. Это позволяет избежать нестабильности сборки в результате выполненных слияний.
Изначально результаты слияния изолированы в вашей рабочей области и не выгружаются на сервер, пока вы не вернете отложенные изменения.
Дополнительные ресурсы
Возвращайте обновленный код в систему управления исходным кодом только после того, как он полностью прошел модульное тестирование и готов к использованию остальной частью команды. На промежуточном этапе работы используйте наборы отложенных правок ( shelvesets ).
После возвращения код будет использоваться в составе следующей плановой сборки. Если работа над кодом не завершена, он может стать причиной нестабильности сборки. Кроме того, любой разработчик, выполнив команду get latest, перенесет ваши изменения к себе. Если они не завершены или недостаточно протестированы, у вашего коллеги могут возникнуть проблемы.
Дополнительные ресурсы
Используйте наборы отложенных правок ( shelveset ) для архивации файлов, содержащих не готовые к возврату изменения. Их также можно использовать для предоставления общего доступа к коду с ознакомительными целями, а также при передаче задания другому разработчику. С помощью наборов отложенных правок вы можете выгружать незавершенные изменения на сервер, не возвращая их в систему управления исходным кодом, если, например, работа над ними еще не закончена и изменения могут привести к нестабильности сборки.
Чтобы отложить правки, сначала просмотрите их список: щелкните правой кнопкой решение в окне обозревателя Solution Explorer и выберите команду View Pending Changes. Выберите файлы, которые хотите отложить и щелкните Shelve. Введите имя набора и комментарий, поясняющий его назначение, а затем щелкните Shelve.
Извлечение набора отложенных правок
File, разверните подменю Source Control и выберите команду Unshelve.Owner name введите имя создателя набора отложенных правок (например, Contoso\JimB или просто JimB ) и щелкните Find.Results выберите набор отложенных правок, который хотите загрузить в рабочую область и щелкните Details.TFS, сбросьте флажок Preserve shelveset on server. Система TFS восстановит каждую отложенную правку в целевую рабочую область в качестве незавершенного изменения, при условии что правка не конфликтует с уже существующим отложенным изменением в этой же рабочей области.Restore work items and check-in notes, если не хотите загружать рабочие элементы и заметки о возврате восстанавливаемого набора. В открывшемся диалоговом окне Details выберите наборы отложенных правок или их элементы, которые хотите поместить в рабочую область, и щелкните Unshelve.Дополнительные ресурсы
После разрешения рабочего элемента верните отложенные изменения и обновите статус рабочего элемента. Суть выполнения данной процедуры в следующем:
Дополнительные ресурсы
Используйте политики возврата для соблюдения правил программирования внутри команды разработчиков. Политики возврата помогают обеспечить соответствие кода, возвращаемого в систему TFS, заданным стандартам.
Стандартные политики возврата из комплекта TFS позволяют проводить обязательный статический анализ кода перед его возвратом. Вы можете настроить политику анализа кода для проверки различных правил. Например, вы можете проверять выполнение правил проектирования, способности к взаимодействию, сопровождения, переносимости, надежности, а также соглашений об именах и пр.
Чтобы применить в командном проекте политику анализа кода при возврате, выполните следующие действия:
Team Explorer щелкните правой кнопкой нужный командный проект, раскройте подменю Team Project Settings и выберите команду Source Control.Check-in Policy и щелкните Add.Check-in Policy установите параметр Code Analysis и щелкните OK.Code Analysis Policy Editor установите Enforce C/C++ Code Analysis (/analyze) или Enforce Code Analysis for Managed Code. Установите оба параметра, если проект содержит как управляемый, так и неуправляемый код.Enforce Code Analysis for Managed Code, настройте правила анализа управляемого кода в соответствии с вашими стандартами программирования.Вы также вольны создать собственную политику возврата, позволяющую выполнять проверки, не входящие в состав стандартной политики. В частности, можно запретить вызовы функций API запрещенных приложений или задать нормативы определенного стиля программирования, например, в каких местах следует помещать фигурные скобки.
Дополнительные ресурсы
TFS " этой книги.Сочетание политик анализа и тестирования кода позволяет осуществлять контроль его качества. Например, при помощи стандартной политики тестирования можно указать, что код будет допущен к возврату в систему управления исходным кодом TFS только после проведения заданных тестов. Вы также вольны настроить политику анализа кода, чтобы гарантировать соответствие кода заданным стандартам качества, то есть, соблюдение правил безопасности, производительности, переносимости,
Чтобы применить политику анализа кода при возврате в систему управления исходным кодом, выполните следующие действия:
Team Explorer щелкните правой кнопкой нужный командный проект, раскройте подменю Team Project Settings и выберите команду Source Control.Check-in Policy, щелкните кнопку Add, а затем выберите и настройте определенную политику.Дополнительные ресурсы
TFS " этой книги.Система Team Foundation не предотвратит перекрытие политики. Однако, выполнив следующие действия, вы сможете установить факт перекрытия политики:
Team Foundation Eventing Service из Team Foundation Core Services API, чтобы внедриться в события возврата.Notify, который анализирует параметры набора изменений и реагирует на перекрытие, если оно случится.Другой способ заключается в просмотре истории набора изменений с целью обнаружения перекрытий политики.
Дополнительные ресурсы
Планируйте работу так, чтобы несколько разработчиков не работали одновременно над одним и тем же фрагментом исходного кода. Иначе возникнут конфликты, разрешить которые бывает непросто. Конечно, часто помогает автоматическое разрешение конфликтов, но оно не поможет, если два или несколько разработчиков работают над одним и тем же методом или одними и теми же строками кода. Конфликты в строках требуют разрешения вручную, что усложняет слияние. Ключ к решению проблемы - эффективное взаимодействие в команде.
Перед началом работы над файлом убедитесь, что извлекли из системы управления исходным кодом последнюю версию этого файла, а также проверьте, не работает ли с этим же файлом кто-то еще. Если с файлом уже работает ваш коллега, спросите, что именно он делает, и решите, стоит ли вам дождаться окончания его работы, или же вам можно действовать параллельно, поскольку вы работаете над разными функциями в разных участках исходного кода.
Чтобы выяснить, извлек ли кто-то файл или нет, выполните следующие действия:
Team Explorer в Visual Studio щелкните дважды Source Control.Чтобы узнать, для каких файлов в данный момент имеются незавершенные изменения, в командной строке Visual Studio 2005 введите следующую команду:
Tf status /format:detailed /user:*
Начиная работу с файлом исходного кода, который будет задействован кем-то еще, сообщите другим членам команды, что работаете над файлом и поясните, что конкретно будете обновлять.
Дополнительные ресурсы
Перед извлечением кода для редактирования убедитесь, что имеете дело с последними версиями всех файлов исходного кода проекта. Чтобы получить их, запустите команду get latest. Если этого не сделать, есть опасность того, что вы будете писать код в устаревших версиях файлов, а последующий возврат вашего кода на сервер приведет к проблемам со сборкой.
Чтобы получить последние копии файлов, относящихся к тому или иному проекту, щелкните правой кнопкой командный проект в окне обозревателя Source Control и выберите команду Get Latest Version. Если в данный момент в вашей рабочей области имеются записываемые файлы с незавершенными правками, эти файлы не будут перезаписаны. Эту команду можно запустить и из командной строки, введя Tf get /all в папке, сопоставленной с текущей рабочей областью.
Дополнительные ресурсы
Не стоит слишком увлекаться использованием команды lock. Блокирование файла во время работы над ним может отрицательно сказаться на производительности всего процесса разработки, поскольку другие пользователи не смогут одновременно работать над этим же файлом. Блокировка файла на время редактирования нужна только в случае, если вы опасаетесь возникновения конфликтов, которые могут вынудить вас выполнять сложное ручное слияние. По возможности разрешайте совместную работу, во время извлечения файла устанавливая тип блокировки None.
Ниже приведены сценарии, при которых использование команды lock оправдано:
Чтобы избежать любой возможности возникновения конфликта, блокируйте файл, извлекая его для редактирования. Это не даст другим пользователям извлекать этот же файл для редактирования и возвращать его. Обязательно известите своих коллег о причинах блокировки и примерном времени, которое потребуется вам для редактирования. Также сообщите им, что сняли блокировку и вернули файл с изменениями.
Можно назначить тип блокировки в процессе извлечения файла для редактирования или заблокировать файл явным образом.
Чтобы заблокировать файл в процессе извлечения, выполните следующие действия:
Source Control щелкните файл правой кнопкой и выберите команду Check Out for Edit.None, Check Out или Check In.Lock. Затем укажите тип блокировки - Check Out или Check In.В отличие Microsoft Visual Source Safe® (, при извлечении файла в TFS вам не предлагается по умолчанию последняя версия. Прежде чем заблокировать файл, поместите в рабочую область его последнюю версию, выполнив команду Get Latest Version.
Дополнительные ресурсы
Блокируя файл исходного кода, оповестите об этом членов команды, чтобы они могли планировать свою работу с учетом недоступности файла. Объясните, почему вам нужен исключительный доступ к файлу и как долго будет сохраняться блокировка. Блокировка файла может стать причиной снижения производительности в цикле разработки, когда нескольким разработчикам нужно работать над одним и тем же исходным кодом.
Блокировка файла на время редактирования нужна только в случае, если вы опасаетесь возникновения конфликтов, которые могут вынудить вас выполнять сложное ручное слияние. По возможности разрешайте совместную работу, во время извлечения файла устанавливая тип блокировки None.
Чтобы заблокировать файл в окне обозревателя Source Control, щелкните файл правой кнопкой мыши и выберите команду Lock. Затем укажите тип блокировки - Check Out или Check In.
Дополнительные ресурсы
URL.По возможности используйте ссылки на проект, потому что они обладают следующими преимуществами:
GUID ) проекта расположен в файле проекта, что однозначно идентифицирует проект, на который имеется ссылка, в контексте текущего решения.Visual Studio отслеживать Debug любые ссылки проекта указывают на сборки Debug, сгенерированные проектами, на которые ссылается сборка. При сборке в конфигурации Release эти же ссылки указывают на сборки Release. Это означает, что вы можете автоматически переходить от отладочных сборок к сборкам выпуска без перенастройки ссылок.Visual Studio обнаруживать и предотвращать циклические зависимости.Вы можете использовать ссылки на проект, если файл сборки находится в наборе проектов решения. Если файл сборки находится за пределами набора проектов решения, а вам нужна ссылка на проект, вы можете выполнить ветвление из исходного проекта в ваш проект. Когда потребуется обновить версию зависимости, произведите слияние из исходного проекта в вашу ветвь.
Дополнительные ресурсы
Иногда невозможно использовать ссылку на проект, например, когда требуется создать ссылку на файл сборки за пределами набора проектов текущего решения и вы не хотите выполнять ветвление из исходного проекта в ваш проект. В этом случае вам придется установить файловую ссылку.
Дополнительные ресурсы
С каждой ссылкой сопоставлен атрибут copy local. В Visual Studio значение этого атрибута ( TRUE или FALSE ) задается при первом добавлении ссылки. Значение FALSE присваивается, если сборка находится в глобальном кеше сборок ( GAC ). В противном случае, присваивается значение TRUE. Значение, заданное по умолчанию, изменять не следует.
Если атрибут copy local имеет значение true, система сборки Visual Studio копирует любую сборку, на которую имеется ссылка, а также все зависимые нисходящие сборки, в клиентскую выходную папку. Например, если клиентский проект ссылается на сборку Lib1, а Lib1 зависит от Lib2 и Lib3, то во время сборки Visual Studio автоматически копирует Lib1, Lib2 и Lib3 в локальную выходную папку вашего проекта.
Дополнительные ресурсы
Чтобы вызвать веб-службу, следует добавить в проект веб-ссылку Так генерируется прокси-класс, посредством которого вы взаимодействуйте с веб-службой. Код прокси изначально содержит или http://SomeWebServer.
Важно! Для веб-служб, выполняющихся на вашем компьютере, всегда используйте адрес http://localhost а не http://ИмяМоегоКомпьютера, чтобы сохранить работоспособность ссылки на любом компьютере.
Статический URL, внедренный в прокси, как правило, не совпадает с URL, который будет использоваться в испытательной и рабочей среде. Обычно URL меняется, по мере того как ваше приложение проходит путь от разработки к тестированию и производству. Есть три способа решения этого вопроса:
URL веб-службы во время создания экземпляра прокси-класса.URL Behavior ссылки на веб-службу значение Dynamic. Это предпочтительный вариант. При этом в прокси-класс добавляется код, извлекающий URL веб-службы из пользовательского раздела файла конфигурации приложения - Web.config для веб-приложения или SomeApp.exe.config для приложений Windows.WSDL.exe, задав параметр /urlkey. При этом происходит примерно то же самое, что и при установке свойства URL Behavior, но в этом случае URL хранится в разделе <applicationSettings> файла конфигурации приложения. Использование динамического URL позволяет создавать пользовательский файл конфигурации, который способен перекрывать параметры основного файла конфигурации приложения. Это позволяет разработчикам и членам группы тестирования временно перенаправить ссылку веб-службы в другое положение.Дополнительные ресурсы
executionTimeout соответственно размеру файла и ширине канала.Следуйте системным требованиям, приведенным в руководстве по установке TFS. В особенности это касается объема жесткого диска. Верхняя граница задается, исходя из объема дискового пространства, которое прокси может использовать для кеширования файлов. По достижению этого предела старые файлы удаляются из кеша, чтобы освободить место для новых файлов. При
Дополнительные ресурсы
Для извлечения новейших файлов в прокси-сервер регулярно запускайте запланированное задание. Это обеспечит наличие последних версий файлов в кеше прокси, а значит, последующие запросы клиентами этих файлов будут выполняться из кеша.
Дополнительные ресурсы
Периодически проверяйте счетчики производительности прокси и журнал событий Windows на предмет наличия ошибок и предупреждений, чтобы получить наглядное представление об эффективности прокси. Убедитесь, что на прокси включена функция кеширования, и следите за производительностью кеша.
Вот список счетчиков производительности, за которыми нужно следить:
Current Cache Size ).Total Cache Hits ).Total Download Requests ).Total Files in Cache ).Total Cache Miss ).Счетчики производительности регистрируются при установке прокси. Они рассчитаны на работу с несколькими экземплярами, то есть, каждому уровню приложений, заданному в файле Proxyconfig, соответствует свой набор счетчиков. Собирая показания счетчиков, вы получите общую картину производительности прокси-сервера.
TFS Proxy сохраняет статистические данные о производительности кеша в XML -файле ProxyStatistics.xml. Вы вольны задать временной интервал для сохранения этих данных. Файл ProxyStatistics.xml находится в подпапке App_Data папки установки прокси.
Дополнительные ресурсы
Если вам предстоит загрузка больших файлов по сети с невысокой пропуск ной способностью (менее 3 Мбит/с), исправьте значение параметра executionTimeout в файле Web.config, чтобы сократить вероятность истечения срока передачи. Значение по умолчанию равно одному часу:
<httpRuntime executionTimeout="3600"/>.
Дополнительные ресурсы
Отключайте прокси на клиентских компьютерах, если прокси не будет работать длительное время. Иначе клиенты будут предпринимать бесполезные попытки восстановить подключение. По умолчанию, эти попытки повторяются каждые пять минут.
Дополнительные ресурсы
Во избежание ненужных перемещений файлов используйте сокрытие рабочей области. При этом не только достигается сокрытие определенных папок рабочих областей, но и повышается производительность системы обработки данных. Запретив копирование не нужных в данный момент файлов и папок в рабочую область, вы сохраните место на локальном диске. Вы можете скрыть существующее сопоставление папки в рабочей области, но лучше создать новое сопоставление, специально предназначенное для сокрытия.
Чтобы скрыть папки в рабочей области, выполните следующие действия:
Visual Studio в меню File раскройте подменю Source Control и выберите команду Workspaces.Manage Workspaces выберите рабочую область, к которой хотите применить сокрытие, и щелкните кнопку Edit.Edit Workspaces выделите в списке Working Folders сопоставление, которое хотите скрыть, или создайте новое сопоставление.Active на Cloak.OK, чтобы закрыть диалоговые окна Edit Workspaces и Manage Workspaces.Помните, что файлы не будут локально скрыты, пока вы повторно не выполните команду get для всей рабочей области.
Дополнительные ресурсы
Team Foundation Server Source Control при помощи VSS ConverterTeam Foundation Server Source Control из других систем управления исходным кодомВ комплекте Team Foundation Server поставляется инструмент , позволяющий переносить файлы, папки, историю версий, метки и пользовательскую информацию из БД Visual SourceSafe в систему управления исходным кодом Team Foundation Server.
Следует знать, что конвертер имеет некоторые ограничения, например:
Team Foundation Server не поддерживает общий доступ. Перемещение совместно используемого файла сводится к копированию этого файла в конечную папку.Team Foundation Server не поддерживает закрепление ( pinning ). Закрепленные файлы переносятся с созданием двух меток.Дополнительные ресурсы
Visual SourceSafe " этой книги.Вы можете вручную выполнить экспорт файлов из предыдущей системы управления версиями, а затем импортировать их в систему управления версиями . При помощи этого инструментария вы сможете написать собственное средство для выполнения миграции.
В данный момент корпорация .
Существует конвертер, созданный компанией , который совместим с системами GNU и Visual SourceSafe (.
Дополнительные ресурсы
Windows.Чтобы изолировать свою работу от остальной команды, используйте дополнительную рабочую область, но не создавайте новую ветвь. При этом первая рабочая область будет содержать ссылки на файлы и папки, над которыми работает остальная команда (то есть, общий исходный код), а вторая предназначается для файлов и папок, которые вы хотите изолировать. Это может потребоваться, например, если вы хотите поработать над файлами отдельно от основного процесса разработки, в частности, при внесении рискованных или экспериментальных изменений. Использование второй рабочей области позволяет избежать дополнительных сложностей при ветвлении и слиянии.
Чтобы создать вторичную рабочую область, выполните следующие действия:
Source Control выберите в раскрывающемся списке Workspace вариант Workspaces.Manage Workspaces щелкните кнопку Add.Add Workspace введите имя новой рабочей области, например, ИзолированнаяРабота. Добавьте комментарий с описанием цели создания рабочей области.Working Folders задайте для рабочей области состояние Active. Укажите папку с исходным кодом, которую нужно включить в рабочую область. Это может быть корневая папка командного проекта или любая вложенная папка. Задайте путь на локальном компьютере, где будут храниться файлы рабочей области.OK и Close, чтобы создать изолированную рабочую область. Чтобы извлечь последнюю версию исходного кода и начать работать с ним в изолированной рабочей области, выполните следующие действия:Source Control в раскрывающееся списке Workspace выбрано имя нужной рабочей области.Get Latest Version.При этом будет выполнено копирование структуры папок и актуального набора файлов с сервера управления исходным кодом в локальную папку на вашем компьютере, сопоставленную с новой рабочей областью. Дополнительные ресурсы
Если вам надо удалить или переименовать файлы, добавленные в систему управления исходным кодом, это следует делать в обозревателе Source Control, запустив Tf.exe из командной строки. Нельзя удалять и переименовывать файлы в проводнике Windows, так как при этом нарушается синхронизация файлов локальной рабочей области с файлами сервера управления исходным кодом.
Порядок действий при удалении файла или папки при помощи Source Control Explorer:
Source Control выберите файл или папку.Delete.Слева появится значок, символизирующий удаление объекта. В столбце Pending Change отобразится статус Delete. Удаление произойдет при очередном возврате правок.
Примечание Невозможно удалить объект, для которого имеется незавершенное изменение. Например, нельзя удалить файл, извлеченный для редактирования.
Особенно удобно использование команд Tf move, delete и rename при работе с несколькими файлами или папками одновременно. В обозревателе Source Control можно перемещать, переименовывать или удалять только по одному файлу или папке.
Дополнительные ресурсы
Удаление и переименование файлов в Solution Explorer следует выполнять при открытом решении. Не удаляйте их непосредственно с диска. Это гарантирует, что при следующем возврате незавершенных изменений система управления исходным кодом TFS сохранит синхронизацию.
Дополнительные ресурсы
Если вы планируете переносить из версии в версию не только исходный код, но и рабочие элементы, а также другие ресурсы TFS, используйте один командный проект на одно приложение. При использовании общего командного проекта для нескольких версий приложения все папки TFS автоматически переносятся в следующий выпуск. Когда все готово к выпуску новой версии приложения, вы можете создать ветвь внутри проекта, чтобы осуществить выпуск и изолировать код.
Используя один проект для каждого приложения, учитывайте следующее:
TFS и выйти за пределы масштабируемости.Дополнительные ресурсы
Если вы не хотите переносить рабочие элементы и другие ресурсы TFS из выпуска в выпуск, создавайте один проект на каждый выпуск. Это позволит вам изменять схемы рабочих элементов, рабочую процедуру, политики возврата после правки и другие элементы, не затрагивая прошлые выпуски. Такая организация работы особенно полезна, если предыдущий выпуск будет сопровождаться другой командой, например, группой непрерывной разработки, рабочий процесс в которой может отличаться от основной команды разработчиков.
Используя отдельный проект для каждого нового выпуска, имейте в виду следующее:
TFS из одного проекта в другой очень нелегко. Рабочие элементы можно копировать в другой проект только по одному; если вы хотите скопировать набор рабочих элементов, вам потребуется написать собственную утилиту.TFS и выйти за пределы масштабируемости.Team Foundation Server способна вместить около 500 проектов с использованием Microsoft Solution Framework (MSF) для шаблона процесса MSF Agile и до 250 проектов с использованием шаблона процесса MSF CMMI. Если вы создаете собственный процесс или выполняете настройку существующего, помните, что схемы рабочих элементов имеют огромное влияние на масштабируемость сервера. Чем сложнее схема, тем меньшее количество проектов способен поддерживать сервер.Дополнительные ресурсы
Управление общим исходным кодом или двоичными файлами производится в два этапа:
Сохранив зависимость, выполните ветвление общего исходного или двоичного кода в ваш проект. Каждый раз при выполнении слияния из общего проекта в конечный вы получите новейшую версию исходного кода. Это позволяет копировать последние изменения по заданному расписанию и выполнять интеграционную проверку до изменения кода в главном дереве.
Дополнительные ресурсы
Как правило, следует избегать зависимостей, пересекающих командные проекты. Старайтесь объединять все взаимозависимые решения и проекты в общем командном проекте. При этом вам реже придется прибегать к настройке сценария сборки. Если у вас есть зависимость, используйте для ее определения ссылки на проект или создайте для зависимости ответвление из общего проекта в свой проект. Избегайте файловых ссылок, потому что ими сложнее управлять. Исключение составляют случаи, когда разработка
Дополнительные ресурсы
В новом командном проекте сопоставляйте корень проекта ( $/ MyTeamProject ) с папкой на локальном диске, имеющей похожее имя, например, C:\TeamProjects. Поскольку сопоставления являются рекурсивными, вся структура локальной папки создается автоматически и будет в точности повторять структуру в системе управления исходным кодом.
Дополнительные ресурсы
Два пользователя одного компьютера не могут использовать одно и то же сопоставление рабочей области. Допустим, вы и ваш коллега не можете сопоставить один командный проект ( $/MyTeamProject ) с одной и той же папкой на локальном компьютере. Создавайте сопоставления в папке Мои документы (хотя это удлиняет путь) или разработайте соглашение об именах для папок на локальном компьютере (например, C:\TeamProjects\User1, C:\ TeampProjects\User2 и т.д.).
Дополнительные ресурсы
Чтобы повысить производительность и сократить использование диска, сопоставляйте только те файлы, которые требуются для проекта разработки. В основном, вам требуются только файлы и проекты, связанные с решением, над которым вы работаете.
Дополнительные ресурсы
Структура дерева исходного кода состоит из сочетания структуры папок, структуры файлов и структуры ветвей. Внутри главной ветви в различных по размеру командах хорошо зарекомендовала себя следующая структура папок и файлов:
Main - контейнер для всех объектов, нужных для отправки проекта заказчику.Source - контейнер для всех объектов, требующихся для выполнения сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, используемого совместно с другими проектами.Unit Tests - контейнер для модульных тестов.Lib - контейнер для двоичных зависимостей.Docs - контейнер для документации, поставляющейся с проектом.Installer - контейнер для исходного кода и двоичных файлов программы установки.Tests - контейнер с результатами тестов, проводившихся тестовой командой.Любое ветвление, проводимое не в папке Main, повлечет за собой копирование структуры папок и файлов в новую ветвь, например:
Development - ветвь разработки.Source - контейнер для всех объектов, требующихся для выполнения сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, используемого совместно с другими проектами.Unit Tests - контейнер для модульных тестов.Lib - контейнер для двоичных зависимостей.Main - Ветвь интеграции.Source - контейнер для всех объектов, требующихся для выполнения сборки.Code - контейнер для исходного кода.Shared Code - контейнер для исходного кода, используемого совместно с другими проектами.Unit Tests - контейнер для модульных тестов.Lib - контейнер для двоичных зависимостей.Docs - контейнер для документации, поставляющейся с проектом.Installer - контейнер для исходного кода и двоичных файлов программы установки.Tests - контейнер с результатами тестов, проводившихся тестовой командой.Дополнительные ресурсы
Если вы хотите обсудить незавершенный код с удаленным членом команды, используйте отложенные правки. Вместо того чтобы отправлять код другому члену команды по электронной почте, вы можете создать правку кода на сервере, а затем предложить коллеге извлечь эти файлы. Также можно использовать отложенную правку, если вы хотите переслать недоработанный код другому разработчику для завершения.
Вы можете отложить правки, если не завершили работу к концу рабочего дня и хотите с гарантией сохранить работу на сервере. Отложив текущие изменения, вы переносите их на сервер TFS, откуда сможете их извлечь их на следующий день (или передать другому члену команды).
Используйте отложенные правки, если в процессе внесения изменений в исходный код вы получили новое более срочное задание (например, исправление ошибки). Для этого вам придется вернуться к стабильной версии кода, но вы не хотите терять свои изменения. Отложите код, чтобы позднее снова извлечь его.
Дополнительные ресурсы
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.