Как предотвратить распространение ошибки через будущие новые функции
Мы столкнулись с проблемой реализации Git в качестве нашего контроля версий. Как можно скорее мы хотим реализовать полный Git Flow.
Давайте представим себе такую ситуацию (Филиалы: Разработка & Мастер):
- Мария работает над новой функцией и в конце дня отправляет ее в ветку Develop.
- На следующий день Боб будет
pull
все изменения, внесенные вDevelop
и начать работать над новой функцией. - В конце дня Боб также выдвигает свои изменения
Develop
,
НО, после этого они обнаруживают, что у первого толчка Марии была ошибка, и они не могут отправить ее в производство (Мастер). Так что код Боба теперь "заражен" ошибкой Марии.
Как решить это или даже предотвратить подобные вещи?
1 ответ
Вы думаете о контроле версий все неправильно. Ничто не было "заражено", ошибка просто существовала на develop
до его отправки в производство. Ошибки не "распространяются через будущие выпуски", они просто существуют, пока вы их не исправите.
Либо создайте исправление и объедините его в develop
или создать revert
для слияния Марии, и слить это в develop
, В любом случае, исправить это просто исправить develop
и двигаться дальше. "Код Боба" не стал "зараженным", ветвь разработки была задержана (надеюсь, ненадолго) из-за ошибки.
Вы не можете предотвратить подобные вещи. Ошибки появятся в коде, это факт жизни. Вы случайно обнаружили ошибку до того, как она была отправлена, это хорошо, это Git ведет себя так, как задумано. Вы просто пишете исправление, добавляете регрессионный тест и идете дальше.
Если вы следите за Git Flow, это еще меньше проблем: работа Марии и Боба войдет в релиз, который пройдет тестирование и исправление ошибок перед отправкой. Если вы намеревались объединить изменения Боба непосредственно в master
и проблема в том, что они задерживаются, ожидая сплошной ветки релиза, тогда их следует рассматривать как исправление с самого начала.