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 Repos | GitHub | GitLab |
|---|---|---|---|
| Интеграция с Azure DevOps | Полная, встроенная | Через сторонние инструменты | Через сторонние инструменты |
| Поддержка TFVC | Да | Нет | Нет |
| Бесплатный тариф | Неограниченное число участников, 10 ГБ на репозиторий | Ограничение по числу участников в приватных репозиториях | Ограничение по числу участников в бесплатном тарифе |
| Встроенные CI/CD | Azure Pipelines (отдельная служба) | GitHub Actions | Встроенный GitLab CI/CD |
| Управление проектами | Azure Boards (отдельная служба) | GitHub Issues, Projects | GitLab 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 →