Нет ничего плохого в мелких коммитах. На самом деле, они предпочтительнее, поскольку их легче просматривать, чем большой патч blob. Они лучше показывают ваш мыслительный процесс и позволяют просматривать работу в небольших кусках. И рецензент всегда может превратить множество мелких коммитов в один большой, но обратное не может быть сделано. Это предполагает, что ваши фиксации находятся в форме логических фрагментов.
Но так как вы не тестируете до после, то вы догадываетесь, что ваши коммиты больше напоминают форму «oops, я сломал что-то последнее совершение». Это нехорошо и препятствует пересмотру. В идеале они должны быть --amend
ed до предыдущего фиксации.
Код, фиксация, затем проверка препятствует TDD. То, что вы хотите сделать, это начать с известного хорошего состояния, кода, запустить тесты, увидеть сбой, а затем узнать, что это было вызвано чем-то в вашем очень маленьком и легко отлаживаемом diff.
Это также означает, что вы нажимаете сломанные изменения на мастера, которые ввернут всех остальных в команду.
Итак, вам нужна тестовая среда на вашей машине dev. Что-то, что работает при нажатии кнопки и завершается быстро (мы говорим минут, вершин). Если полный набор окажется слишком медленным или громоздким, вы можете запустить только часть пакета, возможно, часть, которую вы чувствуете, наиболее важна для ваших изменений, а затем пусть тестовый сервер выполнит полный набор после нажатия. Это хороший компромисс между эффективностью теста и тщательностью.
Если по какой-то причине вы не можете получить тестовую среду, запущенную на вашем компьютере-разработчике, вы можете работать в своей ветви и нажимать на нее. Тогда, если это не сработает, вы можете сделать свое исправление --amend
. Когда вы закончите с вашей функцией, вы можете объединить свои изменения в мастер.Это и устраняет «упс, я сломал», и обязывает вас нарушать мастер для всех остальных, все еще делая небольшие, легко просматриваемые коммиты.
Что вы должны использовать на своем сервере тестирования, так это запустить тесты как можно ближе к моделированию производства, машины-разработчики часто гетерогены, и это здорово, и автоматизировать выполнение тестов на случай, если кто-то станет неаккуратным.
В чем проблема с множеством мелких коммитов? – hasen
Кроме того, в чем проблема с наличием сервера тестирования на вашей рабочей станции? Я бы счел это необходимым. –
Мне просто интересно, стандартный ли мой метод. Но если наличие тестового сервера на моей рабочей станции является рекомендуемым подходом, я попытаюсь это сделать. – Chris