Smart commits

…или как сделать процесс ревью проще

Предыстория

В нашей команде давно начались попытки проводить ревью кода друг у друга. Но как и всякое нововведение, заставляющее делать дополнительные действия помимо привычных, до сих пор, участники подключаются к этому процессу неохотно.

В нашей команде мы используем инструмент для ревью под названием Atlassian Crucible. Инструмент для закрытой разработки недешевый, но для команды в 5 человек вполне доступный. А для опенсорсных проектов даже можно попросить бесплатную лицензию. Но речь сейчас не конкретно об этом инструменте, а о том, какие возможности он предлагает для облегчения процесса создания нового ревью.

Умные коммит-сообщения

Создавать новое ревью тяжело. Особенно когда нужно идти в интерфейс, куда-то кликать, что-то вводить. Если это не происходит автоматически, заниматься этим мало кто будет - только те, кто сразу приучился так делать. Есть несколько способов облегчить процесс:

  • Драконовский
  • Указание информации в коммит-сообщении

Первый вариант хорош на высоконагруженных системах, где каждый коммит обязательно должен кто-то просмотреть и подтвердить его адекватность. В этом случае можно поставить инструмент ревью на пути в мастер и автоматически создавать ревью на каждый коммит и мержить только после аппрува.

В нашей команде, где работа кода не столь критична, как результат, который он может принести, такой способ не подходит. Поэтому есть и второй способ - указание в коммите дополнительного сообщения, с информацией к действию.

Крусибл позволяет при создании нового коммита, в сообщении указать следующее (через пробел после комментария):

Для нового ревью

+review PROJECT @reviewer1 @reviewer2

где PROJECT - имя проекта в крушибле, reviewer - имя людей-ревьюверов, разделенных пробелом.

Для добавления к существующему ревью

+review PROJECT-111

где 111 - номер существующего ревью.

Идеи исходя из этого

Коммиты, которые сами себе создают ревью - это ведь только одно из возможных применений. Еще можно настроить систему сборки на выполнение особых действий по наличию других сообщений. Например, добавить документацию на сайт. Отправить дополнительное email-сообщение. Описать подробности в ченж-лог. Запустить сборку другого проекта. Все что сможет предложить фантазия!