Я не знаю, как вы определяете «всех», но у моей команды есть «центральное репо на сервере», а также время от времени мы извлекаем репо других коллег, не проходя через это центральное репо. Когда мы делаем это, мы по-прежнему обращаемся к серверу, потому что мы решаем не рассылать исправления о месте, а не через центральный репозиторий. Обычно это происходит, когда группа сотрудничает над определенной функцией и хочет быть в курсе друг друга, но пока не заинтересована в публикации этой функции для всех. Естественно, поскольку мы не скрытные работники бункеров, такие ситуации продолжаются недолго, но DVCS предоставляет гибкость, позволяющую делать все, что угодно. Мы можем публиковать ветку или нет по вкусу.
Но 90% + времени, конечно, мы идем через центральное репо. Когда меня не волнуют какие-то конкретные изменения или работа конкретного коллеги, это более удобно и лучше масштабируется, чтобы извлекать «изменения всех моих коллег, которые были проверены в центральном репо», а не отдельно извлекать изменения из каждого из N коллеги. DVCS не пытается помешать «извлечению из основного репо», являющемуся наиболее распространенным рабочим процессом, он пытается не допустить, чтобы он был единственным доступным рабочим процессом.
«Распределенный» означает, что все репозитории технически эквивалентны в отношении git
программного обеспечения, но из этого не следует, что все они имеют одинаковое значение для разработчиков и наших рабочих процессов. Когда мы выпускаем для клиентов или для производственных серверов, репо, которое мы используем для этого, имеет другое значение, чем репо, используемое только одним разработчиком на своем ноутбуке.
Если «действительно децентрализованные» означает «нет специальных репо» , то я не думаю , что это то , что Линус значит чемпион, учитывая , что в действительности он делает поддерживать специальные операции РЕПО , которые являются более важными в великой схеме вещей, чем какой-то случайный клон Linux, который я сделал вчера и планирую использовать только для разработки небольшого патча, а затем удалить его, как только он примет патч. git
его привилегия не превосходит мою, но Линус делает это привилегией. Его "текущее состояние Linux", мое нет. Так естественно изменения имеют тенденциюпройти через Линуса. Сила DVCS над централизованными VCS не в том, что не должно быть фактического центра, а в том, что изменения не должны проходить через какой-либо центр, потому что (если позволяют конфликты) любой может объединить что угодно.
Системы DVCS также вынуждены , поскольку они децентрализованы, предоставлять определенные удобные функции, основанные на том факте, что вы обязательно должны иметь полную историю (то есть репо) локально, чтобы что-либо делать. Но если подумать, нет фундаментальной причины, по которой вы не могли бы настроить централизованную VCS с локальным кешем, который хранит всю историю операций, доступных только для чтения, которые могут быть устаревшими (я думаю, что у Perforce есть опция для этого режима, но я никогда не использовал Perforce). Или в принципе вы можете настроить git
с вашим.git/
каталог на удаленно смонтированной файловой системе, чтобы эмулировать «особенность» SVN, которая не работает, если у вас нет сетевого подключения. По сути, DVCS заставляет сантехнику быть более надежной, чем в централизованной VCS. Это (очень приятный) побочный эффект, который помог мотивировать дизайн DVCS, но такое распределение ответственности на техническом уровне не то же самое, что полная децентрализация всей ответственности человека .