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