Контроль исходного кода - распределенные системы по сравнению с нераспределенным - PullRequest
14 голосов
/ 18 марта 2010

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

Ответы [ 6 ]

31 голосов
/ 19 марта 2010

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

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

.

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

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

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

12 голосов
/ 18 марта 2010

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

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

4 голосов
/ 18 марта 2010

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

3 голосов
/ 18 марта 2010

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

Проверки DVCS являются полными и автономными, включая историю репозитория. Это не относится к CVCS.

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

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

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

1 голос
/ 12 апреля 2010

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

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

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

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

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

0 голосов
/ 19 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...