Процессы разработки моей команды основаны на непрерывной интеграции . Единственные ветки, которые мы создаем, - это ветки обслуживания, когда мы выпускаем, но в противном случае от разработчиков ожидается обязательство регулярно (ежедневно, если не чаще) транковать, чтобы работа каждого была всегда интегрирована, постоянно тестировалась и все такое хорошее.
Мое понимание DVCS заключается в том, что он отлично подходит для ветвления. Я работал несколько лет назад в команде, где это было бы очень полезно, так как каждая часть разработки выполнялась в ветке, и объединялась только после завершения и тестирования. Но это была философия, отличная от непрерывной интеграции.
Но мне кажется, что для команды, которая использует непрерывную интеграцию, отличные возможности таких инструментов DVCS, как Git , не будут особенно актуальны и могут даже помешать процессу непрерывной интеграции, если объединение изменений требует дополнительных шаги, которые могут быть забыты.
Я уверен, что у DVCS есть и другие преимущества (например, фиксация очень быстрая, потому что она локальная, предположительно, слияние с основной веткой может происходить в фоновом режиме, пока разработчик продолжает работать).
Но для этого вопроса мне интересно, как команды, использующие DVCS и непрерывную интеграцию, согласовывают две, казалось бы, противоречивые философии. В основном мне интересно услышать от людей, которые на самом деле делают это.