Открыть сервис

Azure Repos

Azure Repos — это облачная служба управления версиями, входящая в состав платформы Microsoft Azure DevOps (ранее Visual Studio Team Services). Она предоставляет командам разработчиков централизованное хранилище для исходного кода, поддерживая как распределённую систему контроля версий Git, так и централизованную Team Foundation Version Control (TFVC). Azure Repos позволяет создавать репозитории, управлять ветками, выполнять слияние кода, просматривать историю изменений и интегрироваться с другими инструментами Azure DevOps, такими как Azure Boards (управление задачами) и Azure Pipelines (непрерывная интеграция и доставка).

История и развитие

Azure Repos возникла как эволюция системы управления версиями, встроенной в Team Foundation Server (TFS) — продукт Microsoft для управления жизненным циклом приложений. Первоначально TFS поддерживал только собственную систему TFVC, которая была централизованной и ориентирована на крупные корпоративные проекты.

В 2013 году Microsoft объявила о поддержке Git в TFS и Visual Studio Online (облачной версии TFS). Это решение было продиктовано растущей популярностью распределённых систем контроля версий, особенно Git, который стал стандартом де-факто в сообществе разработчиков открытого кода. В 2015 году Visual Studio Online был переименован в Visual Studio Team Services (VSTS), а в 2018 году — в Azure DevOps, в составе которого служба управления версиями получила название Azure Repos.

Поддержка TFVC в Azure Repos сохраняется для обратной совместимости, но основное развитие и новые функции ориентированы на Git. В 2020 году Microsoft добавила возможность создания репозиториев с неограниченным числом участников в бесплатном тарифе, что сделало Azure Repos конкурентоспособной альтернативой GitHub и GitLab.

Ключевые возможности

Поддержка Git и TFVC

Azure Repos поддерживает два типа репозиториев:

  • Git-репозитории: распределённая система, где каждый разработчик имеет полную копию репозитория. Поддерживаются все стандартные операции Git: клонирование, коммиты, ветвление, слияние, перебазирование, отправка (push) и получение (pull) изменений. Azure Repos предоставляет веб-интерфейс для просмотра истории, сравнения версий и управления запросами на слияние (pull requests).
  • TFVC-репозитории: централизованная система, где вся история хранится на сервере, а разработчики работают с локальными копиями (workspaces). TFVC поддерживает как серверные, так и локальные рабочие области, а также более сложные модели ветвления, чем Git. Эта система часто используется в крупных корпоративных проектах, где требуется строгий контроль доступа и аудит.

Управление запросами на слияние (Pull Requests)

Pull Requests (PR) — центральный элемент совместной работы в Azure Repos. Разработчик создаёт ветку для новой функции, вносит изменения, а затем отправляет запрос на слияние в основную ветку (например, main или master). PR позволяет:

  • Просматривать изменения в коде (code review) с комментариями и обсуждениями.
  • Запускать автоматические сборки и тесты через Azure Pipelines.
  • Устанавливать политики ветвления, например, требовать обязательное ревью или успешное прохождение тестов перед слиянием.
  • Отслеживать статус PR и историю обсуждений.

Политики ветвления

Azure Repos позволяет настраивать политики для отдельных веток, что обеспечивает контроль качества кода. Примеры политик:

  • Требование ревью: запрет слияния без одобрения указанного числа рецензентов.
  • Автоматические проверки: обязательный запуск сборки или тестов перед слиянием.
  • Запрет на прямые коммиты: блокировка отправки изменений напрямую в защищённую ветку (например, main).
  • Требование связывания с рабочими элементами: каждый коммит или PR должен быть привязан к задаче из Azure Boards.

Интеграция с Azure DevOps

Azure Repos тесно интегрирована с другими службами Azure DevOps:

  • Azure Boards: автоматическое связывание коммитов и PR с задачами, пользовательскими историями или ошибками. При создании PR можно указать, какие задачи он закрывает.
  • Azure Pipelines: автоматический запуск сборок и развёртываний при каждом push или создании PR. Поддерживаются как классические конвейеры (YAML), так и графические редакторы.
  • Azure Test Plans: связывание тестовых случаев с изменениями кода.
  • Azure Artifacts: публикация пакетов (NuGet, npm, Maven) из репозитория.

Безопасность и контроль доступа

Azure Repos предоставляет гибкие механизмы управления доступом:

  • Azure Active Directory (AAD): аутентификация через корпоративную учётную запись, поддержка многофакторной аутентификации (MFA).
  • Разрешения на уровне репозитория: можно назначить права на чтение, запись, создание веток или управление политиками.
  • Токены доступа: создание персональных токенов (PAT) для автоматизации и CI/CD.
  • Аудит: журнал всех операций (коммиты, PR, изменения прав) доступен через Azure Monitor.

Сравнение с альтернативами

Azure Repos конкурирует с другими облачными Git-сервисами, такими как GitHub, GitLab и Bitbucket. Основные отличия:

ХарактеристикаAzure ReposGitHubGitLab
Интеграция с Azure DevOpsПолная, встроеннаяЧерез сторонние инструментыЧерез сторонние инструменты
Поддержка TFVCДаНетНет
Бесплатный тарифНеограниченное число участников, 10 ГБ на репозиторийОграничение по числу участников в приватных репозиторияхОграничение по числу участников в бесплатном тарифе
Встроенные CI/CDAzure Pipelines (отдельная служба)GitHub ActionsВстроенный GitLab CI/CD
Управление проектамиAzure Boards (отдельная служба)GitHub Issues, ProjectsGitLab Issues, Boards
Политики ветвленияГибкие, настраиваемыеОграниченные (только для защищённых веток)Гибкие, настраиваемые

Azure Repos часто выбирают организации, уже использующие экосистему Microsoft (Azure, Office 365, Visual Studio), а также команды, которым требуется поддержка TFVC для унаследованных проектов.

Применение

Azure Repos используется в различных сценариях:

  • Корпоративная разработка: крупные компании с жёсткими требованиями к безопасности и аудиту, например, в финансовом секторе или государственных учреждениях.
  • Открытые проекты: Azure Repos поддерживает публичные репозитории, что позволяет размещать проекты с открытым исходным кодом.
  • Образовательные проекты: университеты и учебные центры используют Azure Repos для обучения студентов работе с Git и совместной разработке.
  • Интеграция с Azure: проекты, развёртываемые в Microsoft Azure, часто используют Azure Repos для хранения кода и автоматизации развёртывания через Azure Pipelines.

Критика и ограничения

Несмотря на широкие возможности, Azure Repos имеет ряд недостатков:

  • Сложность настройки: для небольших команд или индивидуальных разработчиков Azure Repos может показаться избыточным из-за обилия настроек и интеграций.
  • Зависимость от экосистемы Microsoft: полная интеграция возможна только в рамках Azure DevOps, что может быть неудобно для команд, использующих сторонние инструменты (например, Jira или Jenkins).
  • Ограничения бесплатного тарифа: хотя бесплатный тариф включает неограниченное число участников, объём хранилища (10 ГБ на репозиторий) может быть недостаточным для проектов с большими бинарными файлами.
  • Отсутствие встроенного Wiki: в отличие от GitHub и GitLab, Azure Repos не имеет встроенного Wiki; для документации приходится использовать отдельные службы (например, Azure DevOps Wiki).

Интересные факты

  • Azure Repos поддерживает работу с Git LFS (Large File Storage) для хранения больших файлов, таких как изображения, видео или архивы.
  • В Azure Repos можно создавать неограниченное количество репозиториев, как публичных, так и приватных.
  • Microsoft использует Azure Repos для внутренней разработки многих своих продуктов, включая Visual Studio и Azure SDK.

Источники

  • Документация Microsoft Azure DevOps: «Azure Repos — Get started with Git repos».
  • Microsoft Learn: «Manage Git repositories in Azure Repos».
  • Официальный блог Azure DevOps: «Announcing unlimited private Git repos for Azure Repos».
  • Статья «Azure Repos vs GitHub vs GitLab» на портале InfoWorld.
  • Книга «Professional Git» by Brent Laster (Wiley, 2017).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →