Оптимизация рабочей области

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Visual Studio 2022 | Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015 | Visual Studio 2013

У вашей команды большая и сложная база кода? Хотите ли вы, чтобы ваша рабочая область содержала только файлы, необходимые для повышения производительности, уменьшения сетевого трафика и сокращения места на диске, требуемого на компьютере разработки?

Примечание

Ветвление или приостановка (или отложение) — это предпочтительные способы изоляции различных усилий по работе с одной и той же базой кода. Однако если ни один из этих подходов не соответствует вашим нуждам, можно сопоставить одну и ту же папку на сервере в нескольких рабочих областях. В большинстве случаев делать это не требуется. При сопоставлении одной и той же папки на сервере в нескольких рабочих областях помните, что в каждой из рабочих областей могут быть свои ожидающие изменения для одного и того же файла.

Оптимизация имен папок

Если вы еще не используете ветви, на сервере следует поместить весь код во вложенную папку с именем Main (например: $/TFVCTeamProject/Main/). Если это так, вы будете готовы, когда ваша команда будет достаточно большой, чтобы требовать ветвей для управления базой кода. На компьютере разработки следует использовать короткий понятный путь к папке, соответствующий структуре проекта, например C:\Users\\YourName\Source\Workspaces\TFVCTeamProject\Main\SolutionName\.

Некоторые дополнительные советы по эффективному именованию папок:

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

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

Оптимизация рабочей области с помощью явных, неявных, замаскированных и нерекурсивных сопоставлений папок

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

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

Когда вы посмотрите на рабочую область вымышленного разработчика, Раиса, ниже, вы можете задаться вопросом: почему бы ей не просто сопоставить $/SiteApp/c:\\code\\SiteApp\\ и сделать с ним? Простая рабочая область, как это, неявно сопоставляет все необходимые папки $/SiteApp/Main/.

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

Folder mappings

Second folder mapping.

Step 1

Раиса не разрабатывает настраиваемые процессы сборки, поэтому ей не нужны $/SiteApp/BuildProcessTemplates. Со временем она ожидает, что база кода будет расти, и она также не хочет автоматически скачивать каждый новый бит кода, добавленного в $/SiteApp/Main/. По мере того как команды, работающие в этих других папках, изменяют эти файлы, когда Раиса получает последние файлы с сервера, она может привести к длительным задержкам в ожидании обновлений файлов, которые ей не нужны.

Для разработки своего кода Раисе нужны все проекты кода, составляющие решение FabrikamFiber. Вместо явного включения каждого проекта кода (например, $/SiteApp/Main/FabrikamFiber/FabrikamFiber.DAL) она вместо этого сопоставляет, поэтому она неявно сопоставляет$/SiteApp/Main/FabrikamFiber/все вложенные папки, содержащие необходимые проекты кода.

Step 2

Райза не нуждается в $/SiteApp/Main/FabrikamFiber/3DModels файлах или $/SiteApp/Main/FabrikamFiber/Docs, поскольку они неявно сопоставленыStep 1, она использует два скрытых сопоставления, чтобы исключить эти папки из рабочей области.

Step 3

Раиса и другие члены ее команды поддерживают и иногда расширяют набор некоторых фундаментальных библиотек. Она нуждается почти во всех текущих библиотеках в этой папке и ожидает, чтобы библиотеки ее команды добавили туда в будущем, так что она сопоставляет $/SiteApp/Main/libraries/Common.

Step 4

Райза нуждается только в небольшом сегменте большой папки, поэтому она сопоставляет ее как закрытую, $/SiteApp/Main/libraries/Common/LibraryCа затем явно сопоставляет только вложенную папку, которую она нуждается: $/SiteApp/Main/libraries/Common/LibraryC/Sub-Library1

Step 5

Райза нуждается в некоторых файлах непосредственно в пределахLibraryD, но она не нуждается в большом содержимом его вложенных папок, поэтому она применяет не рекурсивное сопоставление с этой папкой: $/SiteApp/Main/libraries/Specialized/LibraryD/*

Использование рабочих областей для изоляции работы и управления работой в разных ветвях

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

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

Diagram showing multiple branches.

Optimize your workspace

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

Integrate and stabilize.

Интеграция и стабилизация Она создает две новые рабочие области для работы в ветвях тестирования и разработки, где она сотрудничает с другими разработчиками и тестировщиками для стабилизации кода во время интеграции.

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

Diagram showing mapping branches to folders.