Source Control - распределенные системы и не распределенные - в чем разница?

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

Ответ 1

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

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

Ответ 2

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

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

.

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

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

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

Ответ 3

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

Ответ 4

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

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

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

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

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

Ответ 5

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

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

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

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

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

Ответ 6

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

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