Я обычный коммиттер и обнаружил, что меня это устраивает, но по общему признанию мои коммит-сообщения почти всегда похожи,
Age: 9 mins [*] Working on implementing and testing PaintSystem.
Age: 17 mins [*] Working on implementing and testing PaintSystem.
Age: 37 mins [*] Working on implementing and testing PaintSystem.
Age: 52 mins [*] Working on implementing and testing PaintSystem.
Так что я не могу точно сказать, что такие частые и привычные коммиты в мою ветку (mercurial) точно подталкивали к созданию наиболее подробных журналов коммитов. Иногда я даже делаю код наполовину готовым, если, скажем, моя жена попросит меня пойти поужинать, и в этот момент я просто поспешно скопирую и использую предыдущее сообщение «Работа над [...]».
Мои шаблоны журнала коммитов, как правило, "Working on [...] Working on [...] Working [...] Completed [...] Started working on [...] Working on [...] Completed [...] Started working on [...]"
С другой стороны, это спасло мою задницу. Иногда я сталкиваюсь с крайним случаем, который я не предвидел и не проверял, и в этот момент частые коммиты помогают мне точно определить, где я допустил ошибку.
Так что я не знаю о лучших привычках, и я, конечно, не из тех, кто выслушивает идеальные логи для фиксации коммитов, но могу с уверенностью сказать, что более частые коммиты определенно могут помочь, когда вам необходимо выполнить регрессию.
Должно ли каждое изменение в одну строку получать коммит?
Раньше я совершал однострочные изменения, но обычно они были хитрыми, и, возможно, у меня было мало времени. Мои коммиты не всегда напоминают совершенные и законченные единицы работы или изменения. Как уже говорилось, иногда это просто результат того, что моя жена неожиданно попросила меня выйти на обед.
TBH, многие из моих коммитов, которые следуют этому "Working on [...]"
шаблону журнала, не моделируют согласованные единицы изменения (почему я часто не могу придумать сообщение лучше чем "Working on [...]"
), а просто результат того, что я сделал передышку, например, приготовил себе чашку кофе. "Completed [...]"
Сообщение указывает на конец этой единицы работы, и я часто пишу гораздо более подробное сообщение вместе с первым "Started working on [...]"
сообщениями типа , когда я просто начать работать над чем - то. Если вы в среднем фиксируете, как один раз каждые 15 минут, то эти сообщения «Работа над [...]» больше похожи на промежуточные, что может сделать кто-то в одном более крупном коммите с более подробным сообщением.
Должен ли я фиксировать перед любым тестом (например, по крайней мере, для ошибок синтаксиса / компиляции, а затем должен полностью отменить его; так как идея не сработала или сообщение является ложью)?
Я просто продолжаю и фиксирую это перед тем, как даже запускать тесты иногда (снова, если у меня было неожиданное событие). Кроме того, несмотря на то, что я один, я делаю push на сервер (только тот, который работает дома в локальной сети), который выполняет CI. Это может показаться излишним, но не знаю, я привык привыкать к этому на своих прежних рабочих местах. Кроме того, я не хочу беспокоиться о необходимости каждый раз запускать все свои модульные и интеграционные тесты вручную. Мне нравится, когда все это связано с толчком. Если тест не пройден, достаточно легко работать в продвижении вперед, где я делаю регресс, исправляю ошибку в последней версии и продолжаю. Тем не менее, я, по крайней мере, собираю код против отладочной сборки перед тем, как зафиксировать.
Должен ли я делать каждое утро / вечер перед тем, как я перестану работать на ужин, пока он еще свежий?
Мне нравится совершать коммиты до того, как я выхожу и делаю перерыв между программированием. Я не особо задумывался, почему именно, пока не столкнулся с этим вопросом. Я полагаю, что это мешает мне выбрать то, где я остановился, без журнала коммитов вместо того, где я остановился, чтобы я мог различить и так далее. Хм, мне нужно связаться с вами по этому вопросу, поскольку теоретически это не нужно, учитывая, как часто я делаю коммиты. Я по-прежнему чувствую себя более комфортно, когда по какой-то причине покидаю компьютер, нажимая и толкаясь. Отчасти это может быть тот психологический страх, скажем, компьютер загорелся после того, как я ушел, и у меня были менеджеры проектов в те дни, когда мы использовали SVN, а разработчики иногда работали неделями, не затягивая дыхание и постоянно напоминая нам проверять код как можно чаще, напоминая нам, что наш код является собственностью компании. Кроме того, он немного более эффективен, особенно при нажатии, так что мой процесс CI может запустить все тесты, пока меня нет, чтобы я мог вернуться и посмотреть результаты.
Да, и иногда я немного напиваюсь после того, как ухожу, и, как правило, плохая идея пытаться писать сложный код в пьяном виде (хотя и не всегда; однажды я придумал действительно хорошую систему контекстного меню после того, как в момент пьянства наступил момент эврики, но у меня было всего 6 сортов пива, и это было не так уж сложно кодировать). Если я попытаюсь сделать это, по крайней мере, я передал трезвый код перед тем, как уйти, чтобы вернуться назад вместо того, чтобы смешивать пьяный код с трезвым кодом, после чего мой журнал коммитов мог бы выглядеть так: "Reverting back to code written before Jagermeister shots."
я не делаю этого очень часто, если я не получал вдохновение от пьяного кода, но в тех редких случаях действительно помогало то, что я что-то совершил, прежде чем вышел и напился.