TFVC и Git

Оценка систем контроля версий (VCS) для Azure DevOps (Бывший TFS)

Michael Sokolov
3 min readJun 18, 2022

Для начала нужно разобраться с терминологией:

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 картина выглядит так:

Использование различных VCS комюнити SQL Server Central в 2008–2020г. , Источник

Почему Git сейчас используется больше?

  1. Распределенный характер означает, что Git очень устойчив к авариям, у кого-то всегда будет копия репозитория, также легче добиться высокой доступности сервиса.
  2. Возможность использовать широкий круг инструментов GitHub, GitLab, Azure DevOps, Bitbucket, Gitea…
  3. Работа в автономном режиме, вы работаете со своим полным репозиторием вместе с Историей. Вы можете фиксировать изменения, откатывать, просматривать историю и т. д. Вам нужно быть в сети только тогда, когда вы хотите синхронизироваться с удаленным репозиторием.
  4. В TFVC нет простого способа сохранить состояние ваших изменений (добавления, модификации, удаления файлов) и переключиться на другую ветку кода. Например, чтобы работать над двумя User Story в 2х ветках и переключаться туда и обратно.
  5. Git репозитории значительно компактнее.
  6. Git позволяет нам создавать локальные Ветки.
  7. Git делает проверку кода более продуктивной. Git позволяет добавить дополнительный Коммит в Запрос на слияние (Pull Request), и рецензент может просмотреть только этот Коммит. В то время как в TFVS рецензент получает новый запрос на проверку и должен просмотреть все заново.
  8. В TFVC репозитории хранятся на центральном сервере, и разработчики извлекают рабочую копию, которая представляет собой моментальный снимок кода в определенный момент времени. С помощью Git разработчики клонируют весь репозиторий на свои машины, включая всю историю.
  9. Идея блокировки всего TFVC репозитария при внесении изменений заслуживает отдельного упоминания.
  10. TFVC не позволяет использовать Git Flow (GitHub Flow)

Плюсы TFVC

  1. Более простое управление проектами сильными культурными различиями у участников. Это обусловлено тем, что TFVS использует централизованную модель контроля версий, что упрощает управление правами доступа, а также упрощает разрешение конфликтов при слиянии кода.
  2. Поддержка бинарных файлов. TFVS лучше подходит для управления бинарными файлами лежащими прямо в репозитории, такими как изображения, видео и скомпилированные артефакты — dll, exe и т.п. Это связано с тем, что TFVS на это рассчитан.

Ссылки:

Подробная статься от Microsoft — Сравнение TFVC и Git, и ее английская версия.

Официальная Документация по управлению версиями Visual Studio

Официальная Документация по Git для Azure Repos

— git-tfs — двусторонний мост между TFVC и Git. Он собирает коммиты TFVC в репозиторий Git и позволяет вам передавать свои обновления обратно в TFVC.

--

--