progit2-ru
progit2-ru copied to clipboard
Повелительное наклонение
В оригинальных руководствах рекомендуют в сообщениях коммитов использовать повелительное наклонение (Императив). Как это применимо к русскому, и что вообще имеется в виду?
Если комментировать коммиты на английском языке то смотрится логично. Получаются короткие и понятные сообщения. К тому же императив по форме там совпадает с инфинитивом. «Fix bug» а не «Fixed bug» или «Fixes bug»
А как по-русски? Вместо «исправлен» или «исправляет» нужно писать «исправь, исправьте» или вообще в инфинитиве — «исправить»?
Повелительное наклонение выглядит нелогично и никто похоже так не пишет. В русских репозиториях обычно используется прошедшее время. Сообщения коммитов отвечают на вопрос «Что сделано?»
А как писать правильно?
Продолжаем разбираться.
Инфинитив может выражать любое наклонение, в том числе повелительное. https://goldrussian.ru/infinitiv-vroli-naklonenij.html
Инфинитив в значении повелительного наклонения подчеркивает категоричность требования, поэтому он используется в командах разного рода, например: Поднять паруса!
В интерфейсе английских программ тоже везде используется императив: Save, Open, Close, но по-русски: Открыть, Сохранить, Закрыть, т. е. переводятся на русский язык неопределенной формой глагола совершенного вида повелительного наклонения. Там где в английском императив (DO NOT CROSS THE LINE), в русском — инфинитив (ЗА ЛИНИЮ НЕ ЗАСТУПАТЬ)
Поэтому текст Write your commit message in the imperative стоит понимать как Пишите сообщения коммитов используя повелительное наклонение, выраженное неопределенной формой глагола
В ГОСТ 2.601 (ЕСКД) сказано буквально следующее: 6.1. В тексте документа при изложении указаний о проведении работ применяют глаголы в повелительном наклонении, например, «Открыть люк...», «Нажать кнопку...» и т.п.
Отличное исследование! Однако следует понимать, что сообщения коммитов не являются инструкцией.
Исходя из практического опыта могу сделать заключение, что сообщения коммитов в подавляющием большинстве случаев используются для:
- Ревью кода, чтобы понимать о чем дальше пойдёт речь.
- Генерации списка изменений, включённых в релиз.
- Просмотра истории.
Поэтому, моё мнение в отношении сообщений коммитов состоит в том, что каждое сообщение должно содержать краткое описание проделанной работы. Поэтому, следует использовать глаголы совершенного вида в прошедшем времени. Например:
- Исправлена ошибка подключения к серверу
- Проведён рефакторинг класса "MyClass"
- Добавлено автоматическое закрытие люка после открытия :)
В ГОСТ 2.601 (ЕСКД) сказано буквально следующее: 6.1. В тексте документа при изложении указаний о проведении работ применяют глаголы в повелительном наклонении, например, «Открыть люк...», «Нажать кнопку...» и т.п.
Приведённые требования больше подходят не для проделанной работы, а для поставновки задачи на нё выполнение. Как правило, именно так и формулируются задачи в системах отслеживания задач. Например:
- Исправить ошибку подключения к серверу
- Провести рефакторинг класса "MyClass"
- Добавить автоматическое закрытие люка после открытия :)
Так как книга написана на английском языке и не учитывает особенностей русского языка, считаю, следует добавить соответствующее примечание.
Я для себя пока вижу, что русский инфинитив лучше подходит. Ведь сообщения коммитов это не констатация факта проделанной работы (рецензент может заставить всё переделать), а либо постановка задачи (тут хорошо вписываются названия тикетов), либо намерение/предложение (как например в данном проекте по переводу книги)
- Ревью кода, чтобы понимать о чем дальше пойдёт речь.
- Генерации списка изменений, включённых в релиз.
- Просмотра истории.
Для всех этих ситуаций инфинитив нормально вписывается. Даже для списка изменений, который делается многоуровневым, как в этом проекте:
Closed issues: ... Merged pull requests:
- Исправить ошибку ...
- Удалить ...
- Добавить ...