Вот что я должен сказать о распределении и централизации в моей собственной книге:
КлючРазница между этими двумя типами систем заключается в том, что централизованная VCS имеет назначенный главный репозиторий.Может быть несколько копий мастера или даже несколько мастеров с каким-то протоколом синхронизации (например, ClearCase MultiSite), но есть только один мастер.Их конструкция предполагает этот единственный мастер-корабль и, следовательно, может зависеть от него.
В распределенной VCS нет назначенного главного репозитория.Пользователи обычно имеют полную частную копию каждого хранилища.Связь между этими частными копиями - это, по крайней мере, в принципе, одноранговые операции: ни один из репозиториев не является более искусным, и конфликты - ситуации, когда Алиса и Боб вносили изменения в одни и те же области одних и тех же файлов, - могут и делаютвозникают и требуют некоторого разрешения.
Всегда можно использовать распределенную VCS централизованным способом: вы просто назначаете один конкретный репозиторий в качестве главной версии и координируете обновления для нее.Однако централизованные системы часто предоставляют такие функции, как блокировка исходных файлов или каталогов, ограничение доступа (для чтения и / или записи, к конкретным файлам, каталогам и / или ветвям) и т. Д.С типичными DVCS их труднее (хотя и технически невозможно) предоставить, а у Git и Mercurial просто нет, по крайней мере, без надстроек.С CVCS, которые обеспечивают блокировку, пользователи могут блокировать файлы (обычно только один конкретный идентификатор версии), чтобы другие пользователи не могли вносить конфликтующие изменения.Концептуально это проще, но, конечно, он может запретить параллельную работу.