Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Повелительное наклонение #385

Open
SergeiKuznetsov opened this issue Feb 15, 2021 · 3 comments
Open

Повелительное наклонение #385

SergeiKuznetsov opened this issue Feb 15, 2021 · 3 comments

Comments

@SergeiKuznetsov
Copy link
Contributor

SergeiKuznetsov commented Feb 15, 2021

В оригинальных руководствах рекомендуют в сообщениях коммитов использовать повелительное наклонение (Императив). Как это применимо к русскому, и что вообще имеется в виду?

Если комментировать коммиты на английском языке то смотрится логично.
Получаются короткие и понятные сообщения. К тому же императив по форме там совпадает с инфинитивом.
«Fix bug» а не «Fixed bug» или «Fixes bug»

А как по-русски? Вместо «исправлен» или «исправляет» нужно писать «исправь, исправьте» или вообще в инфинитиве — «исправить»?

Повелительное наклонение выглядит нелогично и никто похоже так не пишет. В русских репозиториях обычно используется прошедшее время. Сообщения коммитов отвечают на вопрос «Что сделано?»

А как писать правильно?

@SergeiKuznetsov
Copy link
Contributor Author

Продолжаем разбираться.

Инфинитив может выражать любое наклонение, в том числе повелительное.
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. В тексте документа при изложении указаний о проведении работ применяют глаголы в повелительном наклонении, например, «Открыть люк...», «Нажать кнопку...» и т.п.

@Morganov
Copy link
Member

Morganov commented Apr 4, 2021

Отличное исследование!
Однако следует понимать, что сообщения коммитов не являются инструкцией.

Исходя из практического опыта могу сделать заключение, что сообщения коммитов в подавляющием большинстве случаев используются для:

  1. Ревью кода, чтобы понимать о чем дальше пойдёт речь.
  2. Генерации списка изменений, включённых в релиз.
  3. Просмотра истории.

Поэтому, моё мнение в отношении сообщений коммитов состоит в том, что каждое сообщение должно содержать краткое описание проделанной работы. Поэтому, следует использовать глаголы совершенного вида в прошедшем времени. Например:

  • Исправлена ошибка подключения к серверу
  • Проведён рефакторинг класса "MyClass"
  • Добавлено автоматическое закрытие люка после открытия :)

В ГОСТ 2.601 (ЕСКД) сказано буквально следующее:
6.1. В тексте документа при изложении указаний о проведении работ применяют глаголы в повелительном наклонении, например, «Открыть люк...», «Нажать кнопку...» и т.п.

Приведённые требования больше подходят не для проделанной работы, а для поставновки задачи на нё выполнение. Как правило, именно так и формулируются задачи в системах отслеживания задач. Например:

  • Исправить ошибку подключения к серверу
  • Провести рефакторинг класса "MyClass"
  • Добавить автоматическое закрытие люка после открытия :)

Так как книга написана на английском языке и не учитывает особенностей русского языка, считаю, следует добавить соответствующее примечание.

@SergeiKuznetsov
Copy link
Contributor Author

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

  • Ревью кода, чтобы понимать о чем дальше пойдёт речь.
  • Генерации списка изменений, включённых в релиз.
  • Просмотра истории.

Для всех этих ситуаций инфинитив нормально вписывается. Даже для списка изменений, который делается многоуровневым, как в этом проекте:

Closed issues:
...
Merged pull requests:

  • Исправить ошибку ...
  • Удалить ...
  • Добавить ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants