Я просто считал последнюю часть Spolsky о Распределенном по сравнению с Нераспределенными системами управления версиями http://www.joelonsoftware.com/items/2010/03/17.html. Каково различие между двумя? Наша компания использует TFS. В чем лагерь делает этой осенью?
Проще говоря, централизованная система VCS (включая TFS) имеет центральное хранилище, и каждый пользователь получает и фиксирует изменения в этом одном месте.
В распределенных VCS каждый пользователь имеет полный репозиторий и может вносить изменения, которые затем синхронизируются с другими репозиториями, сервер обычно не нужен.
Разница заключается в процессе публикации:
.
Система управления версиями предназначена для преодоления сложности изменений данных (из-за параллельных задач и / или параллельной работы над одной задачей), и способ взаимодействия с другими (другие задачи и / или другие люди) совершенно иным. между CVCS и DVCS.
TFS ( Team Foundation Server ) - это система управления проектами, которая включает CVCS: Team Foundation Version Control (TFVC), в основе которой лежит понятие «рабочий элемент».
Его централизованный аспект обеспечивает согласованность (других элементов, кроме источников)
См. Также этот документ VSS to TFS , в котором показано, как он адаптирован команде, имеющей доступ к одному справочнику.
Одна ссылка означает, что ее легче поддерживать (нет необходимости выполнять синхронизацию или обновление данных), следовательно, в ней управляется большее количество элементов (списки задач, планы проектов, проблемы и требования).
Централизованная VCS (CVCS) включает центральный сервер, с которым происходит взаимодействие. Распределенной VCS (DVCS) не нужен централизованный сервер.
Проверка DVCS является полной и автономной, включая историю репозитория. В случае с CVCS дело обстоит иначе.
При использовании CVCS для большинства действий требуется взаимодействие с сервером. Не так с DVCS, поскольку это «полные» проверки, история репо и все такое.
Для фиксации в CVCS вам нужен доступ на запись; пользователи DVCS «тянут» изменения друг от друга. Это приводит к большему количеству социального кодирования, чему способствуют GitHub и BitBucket.
Это несколько важных вопросов, несомненно, есть и другие.
Я бы рекомендовал прочитать обзор Мартина Фаулера Инструменты контроля версий
Вкратце ключевое различие между CVCS и DVCS заключается в том, что в первом случае (примером которого является TFS) есть одно центральное хранилище кода, а во втором случае есть несколько хранилищ, и ни одно из них не является центральным "по умолчанию" - они все равны.
Посмотрите http://hginit.com. Джоэл написал хороший учебник по Mercurial, который является DVCS. Я раньше не читал о DVCS (я всегда использовал SVN) и нашел его легким для понимания.
Разница огромная.
В распределенных системах каждый разработчик работает в своей песочнице; у него есть свобода экспериментировать столько, сколько он хочет, и нажимать на «главный» репозиторий только тогда, когда его код готов.
В центральных системах все работают в одной песочнице. Это означает, что если ваш код нестабилен, вы не можете его зарегистрировать, потому что вы нарушите чужой код.
Если вы работаете над функцией, то, естественно, потребуется некоторое время, прежде чем она стабилизируется, а поскольку вы не можете позволить себе зафиксировать какой-либо нестабильный код, вы будете сидеть над изменениями, пока они не станут стабильными. Это делает разработку действительно очень медленной, особенно когда над проектом работает много людей. Вы просто не можете легко добавлять новые функции, потому что у вас есть проблема со стабилизацией, когда вы хотите, чтобы код в магистрали был стабильным, но вы не можете!
с распределенными системами, поскольку каждый разработчик работает в своей собственной песочнице, ему не нужно беспокоиться о том, чтобы испортить чужой код. И поскольку эти системы, как правило, действительно хороши для слияния, вы все равно можете поддерживать свою кодовую базу в актуальном состоянии с основным репозиторием, сохраняя при этом ваши изменения в вашем локальном репозитории.