Комментарий к коммиту до коммита

16 января 2013 г.

Вы встречались с проблемой, когда вы пишите много кода, нажимаете коммит и не знаете как сформулировать комментарий? Такое случается, когда во время кодинга было сделано несколько подзадач, еще рефакторинг, еще code cleanup небольшой и т.п. Приходится писать либо очень большой комментарий, либо опустить руки и написать «fixes» или «big changes» или подобный комментарий, который ничего не значит. При работе в команде такие комментарии наносят большой вред, т.к. становится сложно понять, что происходит с кодом:

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

Пример я буду показывать на TortoiseHg, но тоже самое было опробовано и на TortoiseGit. Я думаю, что конкретная реализация интерфейса DVCS не должна вызывать сложность.

  1. Для начала открываем Workbench и пишем комментарий на задачу, которую мы сделаем за ближайшие 10-30 минут. Здесь надо привыкнуть писать комментарий в прошедшем времени, как будто задачу уже реализовали:
  2. Переходим в IDE и начинаем печатать код
  3. Когда задача реализована, возвращаемся в Workbench, комментарий к коммиту у нас уже есть, обновляем список измененных файлов и жмем коммит:

Получается, что мы сначала пишем комментарий к будущим изменениям, потом эти изменения делаем.

Плюсы

  • Делаем только одну задачу. Захотели порефакторить или отвлечься? Уже нельзя, коммитом четко обозначена небольшая задача;
  • Моделируем будущее у себя в сознании и думаем как бы быстрее до него дойти;
  • Когда вы привыкните работать в таком стиле, то без готового комментария уже будете испытывать дискомфорт, появится стремление написать себе мини-задачу;
  • Очень частые коммиты (не буду объяснять почему это хорошо);
  • Если вы отвлеклись, то легко вернуться в поток, прочитав мини-задачу, которую в данный момент решаем;
  • Равномерная нагрузка в течение дня. Мы ставим маленькие задачи и получаем постоянные легкие «победы» после их завершения.

Минусов нет, это отлично работает для обычных повседневных задач, когда можно декомпозировать большую User Story. Есть единственное ограничение: если вы будете работать с VCS (VSS, SVN и т.п.), то вам нужно будет использовать feature branching, иначе не получится делать такие маленькие коммиты.

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

Опробовано на нескольких проектах в нашей компании, приводит к крайне положительным результатам.

Моя книга «Антихрупкость в IT»

Как достигать результатов в IT-проектах в условиях неопределённости. Подробнее...