TFVC и Git
Оценка систем контроля версий (VCS) для Azure DevOps (Бывший TFS)
--
Для начала нужно разобраться с терминологией:
Azure DevOps или Team Foundation Server (TFS, был переименован в 2019г) — это инструмент управления жизненным циклом приложений, который включает в себя компонент системы контроля версий (VCS).
Azure DevOps поддерживает 2 системы версионирования репозиториев (“repo”):
Team Foundation Server Version Control (TFVC)
- Централизованная система
- Проприетарная технология Microsoft, поддерживаемая только ее продуктами
Git
- Распределенная система, устойчивая к разделению
- Open Source
Система контроля версий — это основа автоматизации.
Факты:
- На июнь 2022г Microsoft рекомендует Git.
- Впервые Git появился в Visual Studio 2013
- Существует более-менее официальная утилита двухсторонней конвертации TFVC <-> Git.
- Microsoft убрала свои внутренние продукты из TFVC. Исходные коды Windows и Office теперь находятся в Git в Azure DevOps.
- Развитие TFVC прекращено, технология оставлена для совместимости со старыми проектами.
- Microsoft купила GitHub в 2018г, который теперь является основным направлением для предложений, связанных с DevOps, поэтому многие люди, которые внесли свой вклад в Azure DevOps, перешли на GitHub.
- Git — дефакто стандарт IT Отрасли.
- Поддержка TFVC для Eclipse и Visual Studio Code, а также для Linux/Mac официально объявлена устаревшей или прекращена.
Аналитика:
Для разработчиков на стеке Microsoft картина выглядит так:
Почему Git сейчас используется больше?
- Распределенный характер означает, что Git очень устойчив к авариям, у кого-то всегда будет копия репозитория, также легче добиться высокой доступности сервиса.
- Возможность использовать широкий круг инструментов GitHub, GitLab, Azure DevOps, Bitbucket, Gitea…
- Работа в автономном режиме, вы работаете со своим полным репозиторием вместе с Историей. Вы можете фиксировать изменения, откатывать, просматривать историю и т. д. Вам нужно быть в сети только тогда, когда вы хотите синхронизироваться с удаленным репозиторием.
- В TFVC нет простого способа сохранить состояние ваших изменений (добавления, модификации, удаления файлов) и переключиться на другую ветку кода. Например, чтобы работать над двумя User Story в 2х ветках и переключаться туда и обратно.
- Git репозитории значительно компактнее.
- Git позволяет нам создавать локальные Ветки.
- Git делает проверку кода более продуктивной. Git позволяет добавить дополнительный Коммит в Запрос на слияние (Pull Request), и рецензент может просмотреть только этот Коммит. В то время как в TFVS рецензент получает новый запрос на проверку и должен просмотреть все заново.
- В TFVC репозитории хранятся на центральном сервере, и разработчики извлекают рабочую копию, которая представляет собой моментальный снимок кода в определенный момент времени. С помощью Git разработчики клонируют весь репозиторий на свои машины, включая всю историю.
- Идея блокировки всего TFVC репозитария при внесении изменений заслуживает отдельного упоминания.
- TFVC не позволяет использовать Git Flow (GitHub Flow)
Плюсы TFVC
- Более простое управление проектами сильными культурными различиями у участников. Это обусловлено тем, что TFVS использует централизованную модель контроля версий, что упрощает управление правами доступа, а также упрощает разрешение конфликтов при слиянии кода.
- Поддержка бинарных файлов. TFVS лучше подходит для управления бинарными файлами лежащими прямо в репозитории, такими как изображения, видео и скомпилированные артефакты — dll, exe и т.п. Это связано с тем, что TFVS на это рассчитан.
Ссылки:
— Подробная статься от Microsoft — Сравнение TFVC и Git, и ее английская версия.
— Официальная Документация по управлению версиями Visual Studio
— Официальная Документация по Git для Azure Repos
— git-tfs — двусторонний мост между TFVC и Git. Он собирает коммиты TFVC в репозиторий Git и позволяет вам передавать свои обновления обратно в TFVC.
- Репозиторий
- Инстукция по преходу TFVC > Git.