Один мой коллега сказал мне , что он думает , в создании нашего CI сервер , чтобы вернуться фиксаций , которые не строить, так что HEADв masterвсегда устойчиво (как при прохождении сборки по крайней мере).
Это лучшая практика, или она может быть более проблематичной, чем просто masterсломаться, пока разработчик не исправит это?
Я думаю, что отмена коммита усложнит задачу чтения коммита и исправления (разработчик должен будет отменить восстановление, а затем зафиксировать исправление, что также загромождает git log), и мы должны просто оставить коммит и затем зафиксировать фикс. Несмотря на то, что я вижу некоторые преимущества в masterстабильности, этот возврат неудачных коммитов не убеждает меня.
редактирование: не имеет значения, является ли это masterили любая другая ветвь разработки, но вопрос остается тем же: должна ли система CI вернуть коммит, который провалил сборку?
другое (длинное) редактирование: Хорошо, мы используем gitстранным образом. Мы считаем, что концепция ветвей идет вразрез с реальным CI, потому что принятие ветки изолирует вас от других разработчиков и их изменений, а также добавляет время, когда вам нужно реинтегрировать свою ветку и справляться с возможными конфликтами. Если все фиксируют masterэто, конфликты сводятся к минимуму, и каждый коммит проходит все тесты.
Конечно, это вынуждает вас нажимать только стабильную версию (или вы нарушаете сборку) и более тщательно программировать, чтобы не нарушать обратную совместимость и не переключать функции при внедрении новых функций.
Есть компромиссы при выполнении КИ тем или иным способом, но это выходит за рамки вопроса (см. Соответствующий вопрос для этого). Если вы предпочитаете, я могу перефразировать вопрос: небольшая команда разработчиков работает вместе в функциональной ветви. Если один разработчик фиксирует что-то, что нарушает сборку для этой ветви, должна ли система CI отменить фиксацию или нет?
masterс самого начала. Для этого используются ветки разработки и функций. Затем эти изменения происходят в чем-то вроде ветки интеграции, где вы можете проверить, будут ли все новые функции нескольких разработчиков работать вместе, и только если они протестированы, они могут перейти в мастер. Или, по крайней мере, это один из возможных рабочих процессов.