#pre-commit.com
Вопрос:
Я пытаюсь получить предварительную фиксацию на работе (у меня она работает на персональном компьютере). Наша настройка безопасности не позволит предварительной фиксации ссылаться на внешние репозитории и устанавливать внешние пакеты pip из них.
Похоже, что мои варианты таковы:
- Храните копию необходимых репозиториев на локальном сервере git
- Setup .pre-commit-config.yml для использования локального репо
Прежде чем я решу, какой путь выбрать, я хочу узнать больше о том, как работает местное репо, но не могу найти много документации по спецификациям на веб-сайте предварительной фиксации (или где-либо еще).
У меня есть настройка .pre-commit-config.yml, как показано в примере ниже.
repos:
- repo: local
hooks:
- id: isort
name: Run isort
entry: isort
language: system
- id: black
name: Run black
entry: black
language: system
- id: flake8
name: Run flake8
entry: flake8
language: system
- id: pydocstyle
name: Run pydocstyle
entry: pydocstyle
language: system
Если я использую вышеуказанный файл .pre-commit-config.yml, какие системные версии пакетов используются? Это версия в активной среде conda (я использую conda)? Я думал, что так и будет, но крючки предварительной фиксации , похоже, запущены, хотя у меня нет isort
, black
, и flake8
или pydocstyle
в активированной среде conda.
Мне это кажется странным, но я не могу найти ничего в Интернете, чтобы подтвердить, какие системные версии этих пакетов будут использоваться при настройке локального репозитория.
Кроме того, что произойдет, если я использую language: python
вместо language: system
?
Я также открыт, если у кого-то еще есть какие-либо идеи о том, как использовать предварительную фиксацию с ограничениями безопасности, с которыми я сталкиваюсь, помимо того, что я изложил.
Ответ №1:
локальные крючки репозитория задокументированы здесь
как правило, они являются аварийным люком для фреймворка и, как правило, не являются маршрутом, по которому вы должны стремиться (предлагаемый маршрут-использование многоразовых репозиториев).
language: system
это дополнительный аварийный люк, в этом режиме предварительная фиксация не управляет вашими инструментами, и вы должны установить их все вручную (это полностью противоречит цели платформы, но в некоторых случаях обеспечивает некоторую совместимость с устаревшими версиями). ибо language: system
он будет запускать инструменты так, как если бы вы запускали их в своей оболочке (например entry: flake8
, будет использовать все, что which flake8
возвращает).
language: python
с другой стороны, это управляемая среда, предварительная фиксация настроит ее и установит для вас. ~как правило, если вы используете language: python
с repo: local
, вы будете использовать additional_dependencies
для установки этих вещей
каждый из языков также задокументирован на веб-сайте
отказ от ответственности: я создал предварительную фиксацию
Комментарии:
1. Энтони — спасибо за информацию. Я ценю помощь и ваши усилия по созданию предварительного обязательства. Я хотел уточнить еще пару вещей, которые, как мне кажется, я понимаю из документов, но не совсем уверен. При выборе
types: [python]
будет ли это просто выполняться для любых файлов Python в фиксации? Кроме того, есть ли способ настроить предварительную фиксацию, чтобы она загружала и настраивала необходимые пакеты из Anaconda? У меня есть ограничение, что в данный момент вещи должны поступать из репозиториев Anaconda (именно поэтому я рассматриваю возможность использования локального репозитория с language: system).2. Чтобы уточнить, я думаю, что кое-что выяснил, за исключением того, можно ли загружать вещи из основных репозиториев Anaconda/conda-forge. Возможно ли это в настоящее время или потенциальный запрос на функцию (например, добавить язык: python-conda)?
3. там уже есть
language: conda
-и даtypes
контролирует, на каких файлах выполняются-это говорит о том, что это оба отдельных вопроса (комментарии удаляются ТАК часто) и могут быть полезны в качестве отдельных вопросов и ответов