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

101

Существует множество вопросов и ответов о сравнении 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.

Грег Тертер
источник

Ответы:

115

В чем большие различия между 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 .

PoSHGit - очень интересное дополнение для пользователей Git в Windows . он обеспечивает автозаполнение команд в командной строке 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 доступен во многих местах ... Вот несколько вариантов:

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

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

веселый
источник
3
ALM Rangers скоро выпустит руководство для пользователей Git для TFVC здесь: vsarbranchingguide.codeplex.com/releases . В текущем бета-выпуске его еще нет, я думаю, он упадет со следующей партией :).
jessehouwing
8
Спустя почти год после моей первоначальной публикации я подумал, что сообщу вам, что мы успешно используем VS2013 с Git. Мне нравится возможность создавать несколько репозиториев в рамках одного командного проекта. У нас было несколько проблем с объединением. В некоторых случаях автоматическое слияние выбирает неправильно. Так что то, что кажется успешным слиянием, на самом деле не так. Теперь мы дважды проверяем все объединенные файлы. Кроме того, в некоторых случаях слияние блокируется и выдает ошибку в пользовательском интерфейсе VS (конфликт слияния libgit2). Чтобы исправить это, мы должны перейти к приглашению cmd и выполнить git pull (не весело).
Greg Grater
1
Я знаю, что эта последняя ошибка будет исправлена ​​в рамках обновления 4. И что были случаи, когда настройки конечной строки различались у разных разработчиков, что могло вызвать эти проблемы.
jessehouwing
5
Мы используем VS 2013 с обновлением 4 с тех пор, как оно вышло несколько месяцев назад, и, похоже, оно устранило все наши проблемы с Git из графического интерфейса. У нас есть привычка регулярно получать данные с удаленного сервера, что помогает поддерживать наши локальные репозитории в актуальном состоянии. Кроме того, в последнее время MS претерпела несколько положительных обновлений в досках журнала продуктов и задач. Теперь прямо с доски вы можете редактировать описание, назначать, устанавливать статус и настраивать приоритет / порядок элемента.
Грег Гратер,
1
Ссылки «Git vs TFVC» ведут на «Начать работу с Git». Означает ли это, что теперь нам лучше использовать Git вместо TFVC? ; D нашел новую ссылку: visualstudio.com/en-us/docs/tfvc/comparison-git-tfvc
Мартин Шнайдер
17

Чтобы прояснить некоторую запутанную смешанную терминологию, которая часто используется в 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 вы просто проверяете другую ветку.
Джеймс Вежба
источник
1
TFS имеет ветки и наборы полок (что позволяет использовать # 5), и вы даже можете настроить свои проекты на использование git, если действительно хотите. TFS VCS также имеет командную строку для #. Это не легкий, но он делает намного больше из коробки, чем git, поскольку в него встроено полное управление проектами / отслеживание ошибок / отслеживание работы / управление выпусками / управление сборкой / политика проверки / тестирование.
Мэтью Уайтед
@MatthewWhited Конечно, это возможно, но это чрезвычайно громоздко по сравнению с git из-за его реализации на основе каталогов по сравнению с реализацией на основе графа git. Обратите внимание, что я заявил, что это невозможно simpleсделать.
Джеймс Вежба
@MatthewWhited Кроме того, я согласен с дополнительными инструментами жизненного цикла приложения, но я ограничиваю свой ответ только решениями для управления версиями исходного кода.
Джеймс Вежба
1
IDK ... Я считаю, что TFS довольно проста в использовании. Хотя мне также не нравятся все ветки, созданные GIT, поскольку это усложняет задачу обеспечения того, чтобы все использовали один и тот же код с быстрым оттоком для одних и медленным для других.
Matthew Whited
Не знаю. GIT просто слишком сложен для задачи, которую он нацелен на выполнение, и очень неинтуитивен (почему это пул-реквест, а не push-запрос ?!). Контроль версий TF очень прост и может быть объяснен любому новому разработчику в моей команде за считанные минуты. Я также считаю, что поощрение работы на местном уровне является большим недостатком внутри команды и даже индивидуально. Как предотвратить потерю работы в Git, не засоряя проект ветками? (Для этого в TFS есть полки - НА СЕРВЕРЕ)
Cesar
4

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

Если вам не нравится интерфейс командной строки, для Git доступно несколько интерфейсов GUI. Сам Git фактически содержит инструмент графического интерфейса браузера репозитория под названием gitkи git-gui- графический интерфейс для git. Затем есть сторонние приложения, такие как git-cola , TortoiseGit и другие .

кралык
источник
2
Конечно, сама Visual Studio предоставляет графический интерфейс для Git. Но всегда бывают случаи, когда вам может понадобиться погрузиться в командную строку, чтобы сделать то, что иначе было бы невозможно. Графический интерфейс, отображающий все команды Git, так же сложен, как и командная строка.
jessehouwing
Есть инструменты командной строки. Например, чтобы полностью исключить ветку из существования.
Инженер