Git vs Team Foundation Server [закрыто]



Я представил Git моей команде разработчиков, и все ненавидят его, кроме меня. Они хотят заменить
это с Team Foundation Server. Я чувствую, что это огромный шаг назад, хотя я не очень хорошо знаком с TFS. Может ли кто-то с опытом сравнить поддержку ветвления на TFS с ветвлением Git? Кроме того, в целом, каковы плюсы и минусы TFS? Я буду ненавидеть его после
использование Git в течение нескольких лет?

713   9  

9 ответов:

Я думаю, заявление

все его ненавидят, кроме меня

делает любые дальнейшие обсуждения отходов: когда вы продолжаете использовать Git, они будут обвинять вы если что-то пойдет не так.

кроме того, для меня Git имеет два преимущества перед централизованным VCS, которые я ценю больше всего (как частично описано Роб Трезвеет):

  • автоматическое резервное копирование всей РЕПО: каждый раз кто-то тянет из центрального РЕПО, он/она получает полную историю изменений. Когда один РЕПО теряется: не волнуйтесь, возьмите один из присутствующих на каждой рабочей станции.
  • автономный доступ к РЕПО: когда я работаю дома (или в самолете или поезде), я могу видеть полную историю проекта, каждую регистрацию, не запуская свое VPN-соединение на работу и могу работать так, как я были на работе: регистрация, проверка, филиал, что угодно.

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

Если они просто не хотят этого, потому что это ново для них и не хотят учиться чему-то новому: вы уверены, что будете успешно развиваться с этим персоналом?

действительно ли каждый человек ненавидит Git или они под влиянием некоторых лидеров общественного мнения? Найдите лидеров и спросите их, в чем проблема. Убедите их, и вы убедите остальную часть команды.

Если вы не можете убедить лидеров: забудьте об использовании Git, возьмите TFS. Сделает вашу жизнь проще.

ключевое различие между этими двумя системами заключается в том, что TFS является централизованной системой управления версиями, а Git-распределенной системой управления версиями.

с помощью TFS репозитории хранятся на центральном сервере, а разработчики извлекают рабочую копию, которая является снимок кода в определенный момент времени. С помощью Git разработчики клонируют весь репозиторий к их машинам, включая всю историю.

одним из преимуществ, имеющих полный репозиторий на машинах вашего разработчика-это избыточность в случае смерти сервера. Еще одним приятным преимуществом является то, что вы можете перемещать свою рабочую копию взад и вперед между версиями, никогда не разговаривая с сервером, что может быть полезно, если сервер не работает или просто недоступен.

для меня настоящим благом является то, что вы можете commit наборы изменений в локальном репозитории без каких-либо разговоров с сервером или причинения потенциально нестабильных изменений в вашей команде (т. е., нарушение сборки).

например, если я работаю над большой функцией, мне может потребоваться неделя, чтобы полностью ее протестировать. Я не хочу проверять нестабильный код в середине недели и ломать сборку, но что произойдет, если я приближаюсь к концу недели, и я случайно Борк всю свою рабочую копию? Если я не совершал все это время, я рискую потерять свою работу. Это не эффективный контроль версий, и TFS восприимчив к этому.

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

Я даже не вдавался в то, насколько лучше ветвление и слияние в DVCS, но вы можете найти тонны объяснений здесь на SO или через Google. Я могу сказать вам по опыту, что ветвление и слияние в TFS не очень хорошо.

Если аргумент для TFS в вашей организации что он работает лучше на Windows, чем Git, я бы предложил Mercurial, который отлично работает на Windows-есть интеграция с проводником Windows (TortoiseHg) и Visual Studio (VisualHg).

люди должны опустить оружие, отойти от выступа, и думаю на минуту. Оказывается, есть объективные, конкретные и неоспоримые преимущества для DVCS, которые будут иметь огромное значение в производительности команды.

все сводится к ветвлению и слиянию.

до DVCS руководящим принципом было " молитесь Богу, чтобы вам не пришлось разветвляться и сливаться. И если вы это сделаете, по крайней мере, попросите его, чтобы это было очень, очень простой."

теперь, с DVCS, ветвление (и слияния) настолько улучшен, что руководящий принцип: "сделайте это по капле шляпы. Это даст вам массу преимуществ и не вызовет у вас никаких проблем."

и это огромный усилитель производительности для любой команды.

проблема в том, что для того, чтобы люди поняли то, что я только что сказал, и убедились, что это правда, они должны сначала инвестировать в немного кривой обучения. Они не должны узнать мерзавца или любым другим обходят ... им просто нужно узнать, как Git делает ветвление и слияние. Прочитайте и перечитайте некоторые статьи и сообщения в блоге, не торопясь, и работать через него, пока вы не увидите его. Это может занять большую часть 2 или 3 полных дня.

но как только вы это увидите, вы даже не подумаете о выборе не-DVCS. Потому что действительно есть четкие, объективные, конкретные преимущества для DVCS, и самые большие выигрыши находятся в области ветвления и слияния.

Оригинал: @Rob, у TFS есть что-то под названием "стеллажи " это решает вашу озабоченность по поводу совершения незавершенного производства без его влияния на официальную сборку. Я понимаю, что вы видите центральный контроль версий как препятствие, но в отношении TFS, проверка вашего кода на полку может рассматриваться как сила b / c, тогда центральный сервер имеет копию вашей работы в процессе в редких случаях, когда ваша локальная машина падает или теряется / крадется, или вам нужно переключать передачи быстро. Я хочу сказать, что TFS должна быть дана надлежащая похвала в этой области. Кроме того, ветвление и слияние в TFS2010 были улучшены по сравнению с предыдущими версиями, и неясно, какую версию вы имеете в виду, когда говорите "... по опыту, что ветвление и слияние в TFS не очень хорошо."Отказ от ответственности: я умеренный пользователь TFS2010.

Edit Dec-5-2011: к OP, одна вещь, которая беспокоит меня о TFS, заключается в том, что он настаивает на настройке всех ваших локальных файлов на " только для чтения" когда ты не работаешь над ними. Если вы хотите внести изменения, поток заключается в том, что вы должны "извлечь" файл, который просто очищает атрибут readonly в файле, чтобы TFS знал, чтобы следить за ним. Это неудобный рабочий процесс. Я бы предпочел, чтобы это работало, это просто автоматически определяет, внес ли я изменения и не беспокоится/не беспокоится о атрибутах файла вообще. Таким образом, я могу изменить файл либо в Visual Studio, либо в блокноте, либо с помощью любого инструмента, который мне нравится. Этот система контроля версий должна быть максимально прозрачной в этом отношении. Существует расширение Проводника Windows (TFS PowerTools), что позволяет работать с файлами в Проводнике Windows, но это не очень сильно упростить рабочий процесс.

поверх всего, что было сказано (

https://stackoverflow.com/a/4416666/172109

https://stackoverflow.com/a/4894099/172109

https://stackoverflow.com/a/4415234/172109

), что верно, TFS-это не просто VCS. Одна из основных функций, которую предоставляет TFS, - это встроенная функция отслеживания ошибок. Наборы изменений связаны с проблемами и могут быть отслеженным. Поддерживаются различные политики для возвратов, а также интеграция с доменом Windows, что есть у людей, которые запускают TFS. Плотно интегрированный графический интерфейс с Visual Studio является еще одним пунктом продажи, который обращается к меньше, чем в среднем мышь и нажмите разработчик и его менеджер.

следовательно, сравнение Git с TFS не является правильным вопросом. Правильный, хотя и непрактичный, вопрос заключается в сравнении Git с просто функциональностью VCS TFS. При этом удары в Git в TFS из воды. Однако любая серьезная команда нуждается в других инструментах, и именно здесь TFS предоставляет одно место назначения.

Если ваша команда использует TFS, и вы хотите использовать Git, вы можете рассмотреть мост "git to tfs". По сути, вы работаете изо дня в день, используя Git на своем компьютере, а затем, когда вы хотите нажать свои изменения, вы нажимаете их на сервер TFS.

есть пара там (на GitHub). Я использовал один на моем последнем месте (вместе с другим разработчиком) с некоторым успехом. Смотрите:

https://github.com/spraints/git-tfs

https://github.com/git-tfs/git-tfs

после некоторого расследования между pro и cons, компания, с которой я был связан, также решила пойти на TFS. Не потому, что GIT не является хорошей системой контроля версий, но самое главное для полностью интегрированного решения ALM, которое обеспечивает TFS. Если бы только функция контроля версий была важна, выбор, вероятно, мог быть GIT. Крутая кривая обучения GIT для обычных разработчиков, однако, не может быть недооценена.

смотрите подробное объяснение в моем блоге TFS как истинная кросс-технологическая платформа.

вся распределенная вещь Git действительно очень велика. это дает несколько функций, которые не имеют стеллажей (в текущем продукте), таких как локальный откат и параметры фиксации (например, функция локальной истории Eclipse). Вы можете облегчить это, используя ветви разработчиков, но давайте будем честными, многие разработчики не любят ветвление и слияние одного бита. Меня попросили включить функцию "exclusive checkout" в старом стиле в TFS несколько раз слишком часто (и отрицали это каждый раз время.)

Я думаю, что многие крупные предприятия очень боятся позволить разработчику просто принести всю историю в локальное рабочее пространство и взять ее с собой (например, к новому работодателю)... Украсть снимок-это плохо, но отнять целую историю-еще более хлопотно. (Не то чтобы вы не могли получить полную историю от TFS вы хотели)...

упоминается, что это отличный способ резервного копирования, который отлично подходит для открытого исходного кода снова, где оригинал сопровождающий может перестать заботиться и удаляет свою версию, но для корпоративного плана это снова не подходит для многих предприятий, поскольку нет четкого распределения ответственности за хранение резервных копий. И было бы трудно понять, какую версию использовать, если основной "проект" каким-то образом исчезнет. Который, как правило, назначает один репозиторий ведущим/центральным.

Что мне больше всего нравится в Git-это опция Push/Pull, где вы можете легко внести код в проект без необходимости иметь совершайте права. Я думаю, вы можете использовать очень ограниченных пользователей и стеллажи в TFS, чтобы имитировать это, но это не так мощно, как опция Git. Ветвление между командными проектами может также работать, но с административной точки зрения это не совсем возможно для многих организаций, поскольку добавление командных проектов добавляет много административных накладных расходов.

Я также хотел бы добавить к вещам, упомянутым в области без управления исходным кодом. Такие функции, как отслеживание рабочих элементов, создание отчетов и построение Автоматизация (включая управление лабораторией) значительно выигрывает от центрального ведущего репозитория. Они становятся намного сложнее, когда вы используете чистую распределенную модель, если вы не сделаете один из узлов ведущим (и, таким образом, вернетесь к менее распределенной модели).

с TFS Basic поставляется с TFS 11, это не может быть далеко, чтобы ожидать распределенный TFS, который позволяет синхронизировать локальный TFS basic к центральному TFS в TFS 12 + era. Я поставлю свою проголосовать за этого в устройства!

для меня главное отличие-это все вспомогательные файлы, которые TFS добавит в ваше решение (.vssscc) для "поддержки" TFS - у нас были недавние проблемы с этими файлами, которые в конечном итоге были сопоставлены с неправильной ветвью, что привело к некоторой интересной отладке...

Comments

    Ничего не найдено.