Сейчас у нас небольшая команда разработчиков, использующих TFS для контроля версий.Я оцениваю возможность нашего перехода на DVCS и задаюсь вопросом, нужно ли нам отказаться от некоторых вещей, которые нам нравятся в нашей нынешней системе, если мы перейдем на DVCS или сможем найти способ ее поддержки.
Прямо сейчас у нас есть стабильная ветвь и 1 ветвь для каждого разработчика (вы можете думать о каждой ветке разработчика как о ветви функций, которая повторно используется от функции к функции).Вот что нам нравится:
1) Каждый раз, когда разработчик проверяет изменения в своей ветке, мы выполняем сборку и тестирование всего на серверах с последующим автоматическим развертыванием всех проектов в этой тестовой среде разработчиков.
2) Слияние ветки любого разработчика с стабильной сделано мной, так что я могу провести 1 последнюю проверку того, что происходит с нашей стабильной веткой, прежде чем вносить изменения.
3) Если я хочу чем-то помочь разработчику, я могу просто взять последние из их ветки и посмотреть на них на моей машине.
Я пытаюсь понять, как это может работатьс DVCS (в частности, мы тестируем с Mercurial).
Я надеюсь, что смогу осуществить что-то вроде этого:
1) Мы настроим центральное хранилище и создадим ветки Main и Release в дополнение к 1 ветке для каждого разработчика.
2) Все разработчики клонируют репозиторий на свой локальный компьютер.
3) Вся работа выполняется в их личной ветке против локального хранилища.
4) Когда они будут выполнены, он извлечет данные из центрального репозитория и выполнит локальное объединение прямой интеграции от Main к их ветви, чтобы интегрировать любые изменения, которые произошли в прошлом, с Main.
5) Затем они отправят свои изменения в центральное хранилище.
6) Некоторые CI-сервисы восприняли бы это изменение, вызвав сборку / тестирование / развертывание для dev всех наших проектов в этой ветви.
7) Если бы все было в порядке, разработчикотправьте мне электронное письмо, в котором говорится, что их ветка готова к слиянию с Main.
8) Затем я могу объединить их изменения, подключившись напрямую к репозиторию remove, или выполнив pull-> merge->push.
Итак, чтобы справиться с нашими запросами:
1) Я предполагаю, что есть некоторые инструменты CI, которые могут наблюдать за веткой в Mercurial и запускать процесс сборки / тестирования / развертывания(как CC.Net).
2) Я все еще могу управлять окончательным процессом слияния из DevX в Main, либо подключаясь к удаленному репо, либо вытягивая, объединяя и проталкивая мой локальный репо.
3) Я полагаю, что я мог бы либо извлекать изменения непосредственно из репозитория другого разработчика, либо я мог бы просто вытащить изменения из центрального репо, а затем обновить свой рабочий каталог для работы с их кодом.
Так что у меня естьэто в основном верно?