zoryn commit¶
Нативная замена gear-commit. Создаёт git-коммит, используя последнюю запись changelog из spec-файла как сообщение коммита.
Использование¶
zoryn commit [--spec FILE] [-m|--message TEXT] [--no-edit] [-a|--all]
[--amend] [-C DIR] [-d] [-- GIT-ARGS]
Subject коммита — version-release последней записи changelog (с префиксом epoch:, если в spec есть Epoch:). Body — текст этой же записи с удалённой строкой-заголовком, обрезанными пустыми строками сверху и снизу и %% → %.
Spec-файл определяется автоматически через .gear/rules (директива spec:) или единственный *.spec в корне репозитория.
По умолчанию подготовленное сообщение открывается в том же редакторе, который использовал бы git commit — резолв через git var GIT_EDITOR (учитывает GIT_EDITOR → core.editor → VISUAL → EDITOR → встроенный default, с финальным fallback на vi). Сохраните буфер для коммита, выйдите без сохранения для отмены.
Опции¶
--spec FILE— использовать указанный spec-файл вместо автоопределения.-m, --message TEXT— использовать TEXT напрямую (взаимоисключающий с--spec).--no-edit— пропустить редактор и закоммитить подготовленное сообщение.-a, --all— передать-aвgit commit(поставить все отслеживаемые изменения).--amend— изменить последний коммит.GIT-ARGS— дополнительные позиционные аргументы дляgit commit(отделять--, напримерzoryn commit -- --signoff).
Семантика сохранения в редакторе¶
Для редакторов семейства vim (vim, vi, nvim, gvim, view, rvim, vimx, ex) zoryn commit использует строгий протокол сохранения: подготовленное сообщение передаётся через stdin, буфер переименовывается командой :file <out>. Буфер помечается как изменённый — ZZ, :wq, :x для неизменённого подготовленного буфера записывают файл и коммитят (в отличие от открытия vim напрямую на реальном файле с тем же содержимым).
Сохранение определяется по наличию файла:
| Действие | Результат |
|---|---|
ZZ / :wq / :x | коммит |
:q! | отмена: «commit message was not saved» |
| сохранение пустого буфера | отмена: «commit message is empty» |
| редактор с ненулевым кодом | отмена с кодом выхода редактора |
Для остальных редакторов zoryn commit откатывается к git commit -F <tmpfile> --edit — стандартная git-семантика (любой чистый выход коммитит).
Совместимость с git hooks¶
zoryn commit экспортирует GEAR_COMMIT=1 (и GEAR_COMMIT_AMEND=1 с --amend) в окружение git commit, так что существующие хуки prepare-commit-msg / commit-msg, проверяющие эти переменные для распознавания вызовов gear-commit, продолжают работать без изменений.
Примеры¶
zoryn commit # автоопределение spec, редактор с changelog
zoryn commit --no-edit # закоммитить changelog без редактора
zoryn commit -a # все отслеживаемые изменения и коммит
zoryn commit --amend # изменить последний коммит
zoryn commit --spec .gear/mypackage.spec # указанный spec
zoryn commit -m "fix build on aarch64" # своё сообщение
zoryn commit -- --signoff # доп. аргументы в git commit