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