Наша организация состоит из около 200 разработчиков, которые постоянно работают над одним продуктом (используя Git контроля версий), который планируется выпустить в определенную дату.
Из-за огромного количества разработчиков мы пытаемся создать «кросс-функциональные» команды, в каждой из которых будет около 10 разработчиков, в результате чего в организации будет около 20 групп разработчиков.
Поскольку мы хотели бы поддерживать постоянно «высокий стандарт» (то есть, когда разработчик извлекает информацию, продукт должен быть, по крайней мере, должен быть компилируемым и т. Д.) Продукта в основном репозитории, мы хотели бы использовать какие-то качественные средства контроля.
Я немного не уверен, как сформулировать вопрос, но мне интересно, смогу ли я получить несколько советов по методологиям разработки для такой большой группы разработчиков, работающих над одним продуктом.
По нашему мнению, один конец спектра состоит в том, чтобы позволить каждому разработчику напрямую связываться с основным репозиторием, однако мы опасаемся, что из-за большого количества разработчиков / коммитов, что «основной репозиторий» может постоянно находиться в нерабочем состоянии, из-за чтобы у нас не было требовательных «ворот качества» для каждого коммита.
Другой конец спектра может быть похож на (мы думаем, что Линус Торвальдс / Linux делает это) структуру дерева или пирамиды, где «основной репозиторий» имеет только три источника извлечения, эти три имеют только несколько надежных источников извлечения и т. Д. Однако мы чувствуем, что с такой структурой изменения должны пройти длинный путь, чтобы попасть в «основной репозиторий». Кроме того, если возникает конфликт слияния, проблема возникает у другого разработчика, чем «первоначальный разработчик».
С учетом всей этой исходной информации и высказанных мнений, как мы можем изучить и прочитать рекомендуемые методологии разработки для стольких разработчиков? Как крупные организации (Microsoft, Facebook, Ubuntu и т. Д.) Структурируют свое развитие?