В общем, я бы всегда использовал распределенную систему контроля версий (DVCS). Я не пробовал Mercurial, но мерзавец; но предпосылка здесь та же.
Если вы используете централизованную систему, вы привязаны к этой структуре. Если вы используете распределенную систему, это не так. Но только потому, что вы можете распространять его, вам не нужно. Если в вашей команде больше смысла иметь единый центральный репозиторий, делайте так.
То, что вы не должны недооценивать, это сила местных отделений. Ветвление в централизованной системе довольно громоздко, ветки разработчика или функции создаются редко. Разработчики скорее имеют несколько рабочих копий или хранят небезопасные изменения в своей рабочей копии, чтобы не нарушать сборку. С децентрализованной системой разработчик создает местный филиал, работает над ним. Прерванный ошибкой show stoppper, он переключается обратно в ветку master, исправляет проблему, переносит изменения в центральный репозиторий и обратно в свою ветвь функций. Рабочий процесс чрезвычайно плавный.
Кроме того, распределенная природа системы делает ее надежной. Если сервер не работает, разработчики обычно работают, они могут даже обмениваться своими изменениями друг с другом.
Наконец, разработчики могут взять работу домой, в самолете, в поезде или где угодно. Они никогда не теряют возможности VCS и могут делать правильные коммиты.
В результате поведение разработчиков в отношении VCS определяется политикой компании, а не технологией, и вы можете изменить свою политику в любое время.