В чем заключаются большие различия между TFVC (TFS Version Control) и Git для управления версиями при использовании Visual Studio 2013?

Существует множество вопросов и ответов о Git и TFVC Source Control, но пока нет ответов, касающихся интеграции Git в Team Foundation Server / Service, которые я могу найти.

Я начинаю разработку «зеленых пастбищ», используя широкий спектр языков (C #, C ++, PHP, Javascript, MySSQL) с помощью Visual Studio 2013. В будущем будут некоторые разработки для iOS. Я хорошо знаком с SVN, VSS и TFVC для управления версиями. Однако я никогда не использовал Git. Я предпочитаю TFS для управления процессами / гибкой разработки ... Он не идеален, но хорошо интегрируется в Visual Studio.

Итак, чтобы помочь мне выбрать между этими двумя системами ...

В чем большие различия между TFVC и Git для управления версиями при использовании Visual Studio 2013?

  • Единственное преимущество в моем случае - это локальный репозиторий (не говоря уже о незначительности) и поддержка разработки под iOS?
  • Единственным недостатком Git является интерфейс командной строки (некоторые утверждают, что это не недостаток ;-P).
  • Вы имели опыт работы с графическим интерфейсом Visual Studio 2013 для Git? Этого достаточно для поддержки базового ветвления / слияния без интерфейса командной строки?
  • Есть ли подробное руководство по запуску для Git, в котором показано, что Git используется с Visual Studio 2013? У Microsoft есть видео по интеграции существующего репозитория Git в Visual Studio 2013, но я ищу возможность начать с нуля с Git и VS 2013.

Я не ищу здесь книгу, а всего лишь несколько пунктов и, возможно, несколько релевантных ссылок от людей, которые использовали и TFVC, и Git.


person Greg Grater    schedule 20.11.2013    source источник


Ответы (3)


Обновлять

С 2013 года произошло много:

  • Microsoft добавила поддержку ssh в Team Foundation Server, Azure DevOps Server и Azure DevOps.
  • Visual Studio 2019 16.8+ поставляется с полностью переработанным клиентом git.
  • Microsoft убрала свои собственные внутренние продукты из TFVC. Источники Windows и Office теперь находятся в Git в Azure DevOps.
  • Microsoft купила GitHub, который теперь является основным направлением предложений, связанных с DevOps, и в результате многие люди, которые внесли свой вклад в Azure DevOps, перешли на GitHub.
  • Виртуальная файловая система для Git и Git Large File System устранила многие причины, по которым люди остались на TFVC.
  • В Azure DevOps есть встроенный инструмент миграции, который может преобразовывать (частично) вашу историю TFVC в репозиторий git.

За все это время для TFVC произошло очень мало:

  • Пайплайны YAML еще не получили поддержку TFVC через 2 года после их внедрения (я этого вообще не жду).
  • Team Explorer теперь называется Legacy в Visual Studio
  • TFVC объявлен функционально завершенным
  • Поддержка TFVC для Eclipse и Visual Studio Code, а также для Linux / Mac официально устарела / срок службы истек.

Совершенно ясно, кто победил: Git.


В чем большие различия между TFS и Git для управления версиями при использовании VS 2013?

В MSDN есть очень обширная страница обо всех функциях и различиях между Team Foundation Version Control и Git.

Единственное преимущество в моем случае - это локальный репозиторий (не говоря уже о незначительном) и поддержка разработки IoS?

Нет, есть еще много чего, но часто это продвинутые сценарии Git. Локальное репо, офлайн-поддержка и полная локальная достоверность истории - это невероятно мощные инструменты, которые вы получаете с помощью Visual Studio прямо из коробки. Есть еще несколько замечательных функций! Возможность ветвления и слияния из одного репозитория в другой очень эффективна. Я рекомендую вам поискать для этого книгу Pro Git. Git в TFS - это просто еще один сервер git, он имеет почти все функции, которые есть в стандартном Git.

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

Единственным недостатком Git является интерфейс командной строки (некоторые утверждают, что это не недостаток ;-P).

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

Могут быть и другие недостатки, в основном из-за того, что он отличается от того, к чему люди привыкли. Не так уж сложно выстрелить себе в ногу, если вы не найдете времени, чтобы узнать, что делает git, когда вы что-то делаете. Такие вещи, как Rebase и Squash, действительно эффективны и создают очень чистую историю, но могут оставить людей с проблемой, которую они больше не могут объединить при неправильном использовании. TFS имеет возможность устанавливать некоторые параметры безопасности, чтобы лишить права принимать очень глупые решения в репозитории git.

Очень интересным дополнением для пользователей Git в Windows является PoSHGit. он обеспечивает автозаполнение команд в командной строке Powershell.

Вы знакомы с графическим интерфейсом VS 2013 для Git? Этого достаточно для поддержки базового ветвления / слияния без интерфейса командной строки?

В нем есть все необходимое для основных операций. Но вам нужно иметь возможность визуализировать различные ветви, чтобы знать, что происходит. Поскольку сервер Git и локальное репо - это просто Git, любой клиент git может вам здесь помочь. SourceTree - это вариант здесь. Клиент Git для Windows - другой.

Для стандартных операций, регистрации, возврата, слияния, ветвления (или push, pull, fetch, commit, merge) пользовательский интерфейс работает нормально.

Есть ли подробное руководство по запуску Git, в котором показано, что Git используется с VS 2013? У MS есть видео по интеграции существующего репозитория Git в VS 2013, но я ищу возможность начать с нуля с Git и VS 2013?

Запуск с Git доступен в нескольких местах ... Вот несколько вариантов:

Другие полезные чтения:

И еще несколько инструментов, которые стоит установить:

person jessehouwing    schedule 21.11.2013
comment
ALM Rangers скоро выпустит свое руководство для пользователей Git для TFVC здесь: vsarbranchingguide.codeplex.com/releases. В текущем выпуске бета-версии этого еще нет, я ожидаю, что он упадет со следующей партией :). - person jessehouwing; 07.05.2014
comment
Спустя почти год после моей первоначальной публикации я подумал, что сообщу вам, что мы успешно используем VS2013 с Git. Мне нравится возможность создавать несколько репозиториев в рамках одного командного проекта. У нас было несколько проблем с объединением. В некоторых случаях автоматическое слияние выбирает неправильно. Так что то, что выглядит успешным слиянием, на самом деле не так. Теперь мы дважды проверяем все объединенные файлы. Кроме того, есть определенные случаи, когда слияние блокируется и выдает ошибку в пользовательском интерфейсе VS (конфликт слияния libgit2). Чтобы исправить это, мы должны перейти к приглашению cmd и выполнить git pull (не весело). - person Greg Grater; 06.11.2014
comment
Я знаю, что эта последняя ошибка будет исправлена ​​в рамках обновления 4. И что были случаи, когда настройки конечной строки различались у разных разработчиков, что могло вызвать эти проблемы. - person jessehouwing; 06.11.2014
comment
Мы используем VS 2013 с обновлением 4 с тех пор, как оно вышло несколько месяцев назад, и, похоже, оно устранило все наши проблемы с Git из графического интерфейса. Мы привыкли регулярно получать данные с удаленного сервера, что помогает поддерживать наши локальные репозитории в актуальном состоянии. Кроме того, в последнее время MS претерпела несколько положительных обновлений для досок невыполненных работ / задач по продукту. Теперь прямо с доски вы можете редактировать описание, назначать, устанавливать статус и настраивать приоритет / порядок элемента. - person Greg Grater; 19.03.2015
comment
Ссылки Git vs TFVC ведут к началу работы с Git. Означает ли это, что теперь нам лучше использовать Git вместо TFVC? ; D нашел новую ссылку: visualstudio.com/en-us / docs / tfvc / compare-git-tfvc. - person Martin Schneider; 05.07.2016
comment
Спустя 4 года я все еще получаю отзывы от этого поста. Некоторое время я использую VS 2015 с VSTS и системой управления версиями Git. Наиболее распространенные действия поддерживаются непосредственно через VS 2015 IDE, при этом не требуются внешние инструменты или поддержка командной строки. Необходимая небольшая поддержка командной строки хорошо документирована сообществом, и ее легко найти в Google. Интерфейс VSTS Agile / Scrum отлично подходит для отслеживания работы и бесшовной интеграции с VS 2015, системой контроля версий Git и управлением выпусками. Много отличных онлайн-тренингов по этой теме на PluralSight. - person Greg Grater; 02.02.2017
comment
какая версия git-сервера используется TFS-сервером @jessehouwing - person Ram; 17.03.2017
comment
@ram, он использует собственную реализацию протокола на основе libgit2 с хранением на SQL сервере. - person jessehouwing; 17.03.2017

Чтобы прояснить некоторую запутанную смешанную терминологию, которая часто используется в TFS

Team Foundation Server (TFS) - это инструмент управления жизненным циклом приложения, который включает исходный компонент системы контроля версий (VCS).

Компонент VCS, который TFS использует, - это в первую очередь Team Foundation Version Control (TFVC).

Итак, вопрос будет: TFVC против Git.

(Фактически, TFS поддерживает Git как вариант VCS.)

Итак, вопрос: TFVC против Git

У jessehouwing есть отличный ответ, который подробно описывает это, поэтому, пожалуйста, укажите, что

Что касается выбора того, что использовать, на мой взгляд, Git выигрывает.

  1. Он легкий: просто настроить и начать использовать.
  2. Его распределенный характер означает, что он очень устойчив к бедствиям, у кого-то всегда будет копия репо.
  3. Автономная работа проста, вы работаете с собственным полным репозиторием. Вы можете фиксировать изменения, возвращаться, просматривать историю и т. Д. Вам нужно быть в сети только тогда, когда вы хотите выполнить синхронизацию с удаленным репозиторием.
  4. В TFS нет простого способа сохранить состояние ваших изменений (добавления файлов, модификации, удаления файлов) и переключиться на другое состояние кода. (Например, чтобы работать над двумя функциями и переключаться вперед и назад). В git вы просто проверяете другую ветку.
person James Wierzba    schedule 27.11.2017
comment
У TFS есть ветки и наборы полок (что позволяет использовать # 5), и вы даже можете настроить свои проекты на использование git, если действительно хотите. TFS VCS также имеет командную строку для #. Это не легкий, но он делает намного больше из коробки, чем git, поскольку в него встроено полное управление проектом / отслеживание ошибок / отслеживание работы / управление выпусками / управление сборкой / политика проверки / тестирование. - person Matthew Whited; 23.07.2018
comment
@MatthewWhited Конечно, это возможно, но это чрезвычайно громоздко по сравнению с git из-за его реализации на основе каталогов по сравнению с реализацией на основе графа git. Обратите внимание, что я заявил, что simple способа сделать это не может. - person James Wierzba; 23.07.2018
comment
@MatthewWhited Кроме того, я согласен с дополнительными инструментами жизненного цикла приложения, но я ограничиваю свой ответ только решениями для управления версиями исходного кода. - person James Wierzba; 23.07.2018
comment
IDK ... Я считаю, что TFS довольно проста в использовании. Хотя мне также не нравятся все ветки, созданные GIT, поскольку это усложняет задачу обеспечения того, чтобы все использовали один и тот же код с быстрым оттоком для одних и медленным для других. - person Matthew Whited; 23.07.2018
comment
Не знаю. GIT просто слишком сложен для задачи, которую он преследует, и очень не интуитивно понятен (почему это пул-реквест, а не push-запрос?!). Управление исходным кодом TF очень простое и может быть объяснено любому новому разработчику в моей команде за считанные минуты. Я также считаю, что поощрение работы на местном уровне является большим недостатком внутри команды и даже индивидуально. Как предотвратить потерю работы в Git, не засоряя проект ветками? (Для этого в TFS есть полки - НА СЕРВЕРЕ) - person Cesar; 17.07.2020
comment
разработчик требует, чтобы их изменения были перенесены в основную ветку. но вы можете так же легко подумать об этом с точки зрения разработчика, который просит передать свои изменения в основную ветку - person James Wierzba; 18.07.2020

Единственным недостатком Git является интерфейс командной строки (некоторые утверждают, что это не недостаток ;-P).

Если вам неудобно пользоваться интерфейсом командной строки, для Git доступно несколько интерфейсов GUI. Сам Git фактически содержит инструмент с графическим интерфейсом для браузера репозитория, называемый gitk и _ 2_ - графический интерфейс для git. Кроме того, существуют сторонние приложения, такие как git-cola, TortoiseGit и другие < / а>.

person kralyk    schedule 18.05.2014
comment
Конечно, сама Visual Studio предоставляет графический интерфейс для Git. Но всегда бывают случаи, когда вам может понадобиться погрузиться в командную строку, чтобы сделать что-то, что иначе было бы невозможно. Графический интерфейс, отображающий все команды Git, так же сложен, как и командная строка. - person jessehouwing; 21.05.2014
comment
Есть инструменты командной строки. Например, чтобы полностью исключить ветку из существования. - person Engineer; 09.04.2019