Используя библиотеку python "pre-commit", как я могу добавить ловушку git pre-commit, которая запускает один файл python?
Я использую эту библиотеку, чтобы попытаться добавить в свой проект ловушку перед фиксацией. Это много, и я не думаю, что проверка перед фиксацией, которую я хочу, требует большого объема, используемого в большинстве их примеров. Все, что я хочу сделать, это запустить единственный файл на Python. В зависимости от того, был ли этот файл завершен / завершен без проблем (IE без исключений), это то, что я хочу разрешить или запретить. Я сделал.pre-commit-config.yaml
но я не знаю, как заставить его работать только с одним файлом.
Я в основном хочу печатать git commit -m "whatever"
для автоматического запуска python myfile.py
<- и в зависимости от кода выхода разрешить или запретить фиксацию. есть идеи, как должен выглядеть мой yaml?
Вот что у меня есть на данный момент:
repos:
- repo: local
hooks:
- id: translation-file-check
name: Check Translation Files Are Aligned
description: This hook ensures that all translation files share the same set of keys and generates a CSV if there are no issues
language: python
entry: "./dir/subdir/myfile.py"
Но я получаю следующую ошибку: .An unexpected error has occurred: OSError: [WinError 193] %1 is not a valid Win32 application
Я думаю, потому что он ожидает, что этот файл.py будет.exe или чем-то еще, хотя я установил language
на питон...
1 ответ
Почти ! есть два способа заставить это работать:
- добавить "shebang" (
#!/usr/bin/env python
) в ваш файл- хотя shebangs - вещь posix,
pre-commit
содержит код, который нормализует платформы и заставляет их работать в Windows!
- хотя shebangs - вещь posix,
использовать
entry: python ./dir/subdir/myfile.py
repos: - repo: local hooks: - id: translation-file-check name: Check Translation Files Are Aligned description: This hook ensures that all translation files share the same set of keys and generates a CSV if there are no issues language: python entry: python ./dir/subdir/myfile.py
(отказ от ответственности: я являюсь автором pre-commit
)