Я подрядчик, который недавно начал с фирмы.
Команда состоит из 3 разработчиков, состоящих из 2 разработчиков младшего и среднего уровня, еще один на том же уровне, начинающий в ближайшее время, и я (6 Years xp). Для обоих существующих разработчиков это их первая работа вне университета / колледжа, и у них никогда не было старшего разработчика, который бы контролировал их работу раньше.
Нет явной политики контроля версий. Разработчики выполняют всю разработку на соединительной линии, а затем внедряются в производство непосредственно со своих машин для разработки. Существующая команда не знакома с ветвлением.
Я изменяю все это и представляю CI, тестовые / промежуточные / производственные серверы TDD и т. Д., А также политику контроля версий, чтобы дополнить это.
Система управления исходным кодом - TFS, которую я никогда не использовал раньше. Он настроен как один гигантский репозиторий.
Я записал несколько указателей для них, но есть ли что-то еще, что я должен добавить / изменить, учитывая опыт команды?
Политика контроля версий
Разработка ведется на багажнике
Если предполагается, что изменение займет более недели, то это должно быть сделано в ветви, с регулярными слияниями из магистрали в ветку, чтобы остановить эти два выхода из синхронизации.
Выпуск веток, созданных для производственного кода. Эта ветвь должна содержать только стабильный код. У нас может быть либо одна ветка релиза, которая обновляется из ствола один раз за спринт, либо мы можем создать отдельную ветку релиза для каждой недели.
Если необходимо сделать срочное исправление ошибки, затрагивающее производственный код, то это делается в ветке релиза и сливается обратно в ствол.
Если мы примем стратегию с одной ветвью релиза, то ствол будет объединен с веткой релиза один раз за спринт в конце спринта.
Если мы примем отдельную ветвь для каждой стратегии выпуска, тогда ствол НИКОГДА не будет объединен с веткой Release
В некоторых случаях может потребоваться дважды исправить ошибку на разных ветвях, если ветки слишком сильно разошлись. Если мы делаем короткие спринты, то это не должно случаться слишком часто.
Я планирую иметь три сервера. Тестовая среда, в которой всегда выполняется последний код в репозитории. Промежуточная среда, в которой выполняется новейшая версия-кандидат для подготовки и тестирования кода кандидата на выпуск и целей UAT, а также производственная среда.
Причина, по которой я планирую это сделать, заключается в том, что до сих пор клиент делал только внутреннее программное обеспечение. Новейший проект предназначен для высококлассного медиа-клиента, и я чувствую, что команде необходимо принять модель более профессионального развития, чем та, которую они делают в данный момент.
Например, в данный момент пользователь может позвонить команде с сообщением об ошибке. Разработчики обнаруживают и исправляют ошибку, проводят быстрый тест на глазные яблоки на своих машинах, а затем сразу же начинают работу. Нет автоматического тестирования или что-нибудь.
Оглядываясь назад, я думаю, что ветвь функций - это слишком далеко, и я это уберу.
По сути, это сводится к тому, что а) ветвлений вообще нет), б) ветвь релиза и магистраль, и в) ветвь релиза на релиз и транк.
Я склонялся к последнему. Первоначально я думал, что у меня будет и кандидат на выпуск, и выпуск для одновременной работы на отдельных серверах (UAT / Production), но фактически магистраль является кандидатом на выпуск в любой момент времени, поэтому ветвь релиз склоняется к безумию. Я думал только о том, что если мы не хотим, чтобы наши заинтересованные стороны видели код разработки, нам может потребоваться отдельная ветка-кандидат на выпуск, но YAGNI и все такое .....