Управление исходным кодом - Распределенные системы по сравнению с Не Распределенный - Каково различие?

Я просто считал последнюю часть Spolsky о Распределенном по сравнению с Нераспределенными системами управления версиями http://www.joelonsoftware.com/items/2010/03/17.html. Каково различие между двумя? Наша компания использует TFS. В чем лагерь делает этой осенью?

14
задан quamrana 19 March 2010 в 10:15
поделиться

6 ответов

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

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

12
ответ дан 1 December 2019 в 06:15
поделиться

Разница заключается в процессе публикации:

  • CVCS (централизованный) означает: чтобы увидеть работу вашего коллеги, вы должны дождаться, пока они опубликовать (зафиксировать) в центральном репозитории. Затем вы можете обновить свое рабочее пространство.
    • Вы активный продюсер : если вы ничего не публикуете, никто ничего не видит.
    • Вы пассивный потребитель : вы обнаруживаете новые обновления, когда обновляете свое рабочее пространство, и вам приходится иметь дело с этими изменениями, хотите вы этого или нет.

.

  • DVCS означает: не существует «единого центрального репозитория», но каждое рабочее пространство является репозиторием, и чтобы увидеть работу вашего коллеги, вы можете обратиться к его / ее репозиторию и просто перенести его историю в ваше локальное репозиторий.
    • Вы пассивный производитель : любой может "подключиться" к вашему репо и вытащить локальные коммиты, которые вы сделали, в его собственное локальное репо.
    • Вы являетесь активным потребителем : любое обновление, которое вы загружаете из другого репо, не сразу интегрируется в вашу активную ветку, если вы явно не сделаете это так (посредством слияния или перебазирования).

Система управления версиями предназначена для преодоления сложности изменений данных (из-за параллельных задач и / или параллельной работы над одной задачей), и способ взаимодействия с другими (другие задачи и / или другие люди) совершенно иным. между CVCS и DVCS.

TFS ( Team Foundation Server ) - это система управления проектами, которая включает CVCS: Team Foundation Version Control (TFVC), в основе которой лежит понятие «рабочий элемент».
Его централизованный аспект обеспечивает согласованность (других элементов, кроме источников)
См. Также этот документ VSS to TFS , в котором показано, как он адаптирован команде, имеющей доступ к одному справочнику.
Одна ссылка означает, что ее легче поддерживать (нет необходимости выполнять синхронизацию или обновление данных), следовательно, в ней управляется большее количество элементов (списки задач, планы проектов, проблемы и требования).

31
ответ дан 1 December 2019 в 06:15
поделиться

Централизованная VCS (CVCS) включает центральный сервер, с которым происходит взаимодействие. Распределенной VCS (DVCS) не нужен централизованный сервер.

Проверка DVCS является полной и автономной, включая историю репозитория. В случае с CVCS дело обстоит иначе.

При использовании CVCS для большинства действий требуется взаимодействие с сервером. Не так с DVCS, поскольку это «полные» проверки, история репо и все такое.

Для фиксации в CVCS вам нужен доступ на запись; пользователи DVCS «тянут» изменения друг от друга. Это приводит к большему количеству социального кодирования, чему способствуют GitHub и BitBucket.

Это несколько важных вопросов, несомненно, есть и другие.

3
ответ дан 1 December 2019 в 06:15
поделиться

Я бы рекомендовал прочитать обзор Мартина Фаулера Инструменты контроля версий

Вкратце ключевое различие между CVCS и DVCS заключается в том, что в первом случае (примером которого является TFS) есть одно центральное хранилище кода, а во втором случае есть несколько хранилищ, и ни одно из них не является центральным "по умолчанию" - они все равны.

0
ответ дан 1 December 2019 в 06:15
поделиться

Посмотрите http://hginit.com. Джоэл написал хороший учебник по Mercurial, который является DVCS. Я раньше не читал о DVCS (я всегда использовал SVN) и нашел его легким для понимания.

4
ответ дан 1 December 2019 в 06:15
поделиться

Разница огромная.

В распределенных системах каждый разработчик работает в своей песочнице; у него есть свобода экспериментировать столько, сколько он хочет, и нажимать на «главный» репозиторий только тогда, когда его код готов.

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

Если вы работаете над функцией, то, естественно, потребуется некоторое время, прежде чем она стабилизируется, а поскольку вы не можете позволить себе зафиксировать какой-либо нестабильный код, вы будете сидеть над изменениями, пока они не станут стабильными. Это делает разработку действительно очень медленной, особенно когда над проектом работает много людей. Вы просто не можете легко добавлять новые функции, потому что у вас есть проблема со стабилизацией, когда вы хотите, чтобы код в магистрали был стабильным, но вы не можете!

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

1
ответ дан 1 December 2019 в 06:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: