Хотя я использую и люблю DVCS для своих личных проектов и могу полностью понять, как это облегчает управление взносами в ваш проект от других (например, ваш типичный сценарий Github), похоже, что у «традиционной» команды могут быть некоторые проблемы из-за централизованный подход, применяемый такими решениями, как TFS, Perforce и т. д. (Под «традиционным» я подразумеваю команду разработчиков в офисе, работающих над одним проектом, который никому не принадлежит, и потенциально каждый может прикоснуться к одному и тому же коду)
Несколько из этих проблем я предвидел сам, но, пожалуйста, присоединяйтесь к другим соображениям.
В традиционной системе, когда вы пытаетесь проверить свое изменение на сервере, если кто-то ранее зарегистрировал конфликтующее изменение, вы вынуждены объединиться, прежде чем вы сможете зарегистрировать свое. В модели DVCS каждый разработчик проверяет свои меняется локально и в какой-то момент подталкивает к другому репо. В этом репо есть ветвь этого файла, которую изменили 2 человека. Кажется, что теперь кто-то должен быть ответственным за решение этой ситуации. Назначенный сотрудник в группе может не обладать достаточными знаниями всей кодовой базы, чтобы справиться со слиянием всех конфликтов. Так что теперь добавлен дополнительный шаг, когда кто-то должен обратиться к одному из этих разработчиков, сказать ему, чтобы он потянул и выполнил слияние, а затем снова нажал (или вам нужно создать инфраструктуру, которая автоматизирует эту задачу).
Кроме того, поскольку DVCS делает работу локально настолько удобной, вероятно, разработчики могли накопить несколько изменений в своих локальных репозиториях, прежде чем выдвигать, что делает такие конфликты более распространенными и более сложными.
Очевидно, что если все в команде работают только над разными областями кода, это не проблема. Но мне любопытно, когда все работают над одним и тем же кодом. Похоже, что централизованная модель вынуждает решать конфликты быстро и часто, сводя к минимуму необходимость крупных, болезненных слияний или того, чтобы кто-то «контролировал» основной репо.
Так что для тех из вас, кто использует DVCS с вашей командой в вашем офисе, как вы справляетесь с такими случаями? Считаете ли вы, что ваш ежедневный (или, более вероятно, еженедельный) рабочий процесс затронут негативно? Есть ли еще какие-то соображения, о которых я должен знать, прежде чем рекомендовать DVCS на своем рабочем месте?