https://github.com/teatov/cz-ru
Конфиг для Commitizen на русском языке, основанный на Conventional Commits
https://github.com/teatov/cz-ru
commitizen conventional-changelog conventional-commits cz russian
Last synced: 6 months ago
JSON representation
Конфиг для Commitizen на русском языке, основанный на Conventional Commits
- Host: GitHub
- URL: https://github.com/teatov/cz-ru
- Owner: teatov
- License: mit
- Created: 2024-10-31T14:29:26.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-15T16:58:46.000Z (about 1 year ago)
- Last Synced: 2026-01-07T21:57:36.315Z (6 months ago)
- Topics: commitizen, conventional-changelog, conventional-commits, cz, russian
- Language: Python
- Homepage: https://pypi.org/project/cz-ru/
- Size: 43.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Мне не хватало Conventional Commits с сообщениями на русском языке,
поэтому я сделал вот это.
Сделано для [Commitizen на Python](https://github.com/commitizen-tools/commitizen).
Не путать с [версией на JavaScript](https://github.com/commitizen/cz-cli),
которая более популярна, но требует наличие `package.json`. Подробнее о различиях
[здесь](https://commitizen-tools.github.io/commitizen/faq/#is-this-project-affiliated-with-the-commitizen-js-project).
Установить можно так:
```bash
pip install commitizen cz-ru
```
О том как пользоваться можно почитать
[здесь](https://commitizen-tools.github.io/commitizen/).
Структура идентична [конфигу cz_conventional_commits](https://github.com/commitizen-tools/commitizen/blob/master/commitizen/cz/conventional_commits/conventional_commits.py).
Названия типов изменений вроде `fix` и `feat` решил оставить как есть.
Это не так важно, плюс не ломает генерацию списков изменений.
Единственное отклонение от оригинала, которое я себе позволил,
и из-за которого вам этот конфиг может не подойти:
### Использование неопределённо-личной формы вместо повелительной
На английском всю жизнь была традиция писать в коммитах
глаголы повелительного наклонения настоящего времени, по типу `update README.md`.
Официальная документация Git
[объясняет это](https://git-scm.com/docs/SubmittingPatches#imperative-mood)
тем, что вы как будто даёте приказы кодовой базе изменить своё поведение.
Мол, "кодовая база, `обнови README.md`".
В русском языке более подходящий аналог этому - инфинитив: `обновить README.md`.
Как по мне, для русского языка такой вариант звучит неестественно.
Вместо отдачи приказов язык тянется описать, что произошло.
Есть вариант **убрать глаголы вовсе** и писать `обновление README.md`.
Вариант на самом деле отличный, но я решил использовать другой вариант,
к которому я тяготею сильнее:
**Неопределённо-личные предложения.**
Как по мне, `обновлён README.md` звучит натуральнее всего.
Либо я предвзят потому что все мои коллеги используют именно такой вариант. Но это уже не важно.
Именно что **неопределённо**-личные.
`обновил README.md` уводит внимание с объекта изменений на автора,
а у авторов разного пола глагол будет лишний раз менять род
(`обновил` или `обновила` - должно быть не важно).
Поэтому стоит оставлять предложения обезличенными, чтобы писать **что сделано с чем**.
Раз мы обращаемся глаголами к вещам из кода, надо сообразить какой у них род.
У меня конвенция проста - использовать род того, чем вещь является: `обновлён (файл) README.md`, `переименована (переменная) counter`,
`удалён (класс) Article`, `исправлена (функция) runServer`, и тому подобное.
### А это вообще важно?
Важно - **выбрать один стиль** для всех и стабильно ему следовать.
А какой именно - дело ваше.
Предоставленная здесь конвенция и форма глаголов - просто одна из кучи опций, которую так вышло что я полюбил и решил написать конфиг.
Если вы несогласны с ней, написать свой собственный конфиг очень легко.
Подробнее про кастомизацию [здесь](https://commitizen-tools.github.io/commitizen/customization/). Обязательно опубликуйте его, больше выбора не повредит.