Понимание того, как настроить предварительную фиксацию с помощью репо: локально

Я пытаюсь заставить работать предварительную фиксацию на работе (у меня она работает на персональном компьютере). Наша настройка безопасности не позволит предварительной фиксации ссылаться на внешние репозитории и устанавливать из них внешние пакеты.

Похоже, у меня есть следующие варианты:

  1. Храните копию необходимых репозиториев на локальном сервере git
  2. Настройте .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?

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


person Ryan    schedule 01.06.2021    source источник


Ответы (1)


локальные перехватчики репозитория документированы здесь

как правило, они служат выходом для фреймворка и, как правило, не являются тем маршрутом, по которому вы должны стремиться (предлагаемый маршрут с использованием многоразовых репозиториев)

language: system - это дополнительный аварийный выход, в этом режиме предварительная фиксация не управляет вашими инструментами, и вы должны установить их все вручную (это полностью противоречит цели фреймворка, но обеспечивает некоторую совместимость с устаревшими версиями). в некоторых случаях использования). для language: system он будет запускать инструменты, как если бы вы запускали их в своей оболочке (например, entry: flake8 будет использовать все, что возвращает which flake8)

language: python с другой стороны, это управляемая среда, предварительная фиксация настроит и установит ее для вас. ~ обычно, если вы используете language: python с repo: local, вы будете использовать additional_dependencies для установки этих вещей.

каждый из языков также задокументирован на веб-сайте


отказ от ответственности: я создал предварительную фиксацию

person Anthony Sottile    schedule 01.06.2021
comment
Энтони - спасибо за информацию. Я ценю помощь и ваши усилия по созданию предварительной фиксации. Я хотел прояснить еще пару вещей, которые, как мне кажется, я понимаю из документации, но не совсем уверен. При выборе types: [python] будет ли это работать с любыми файлами Python в коммите? Кроме того, есть ли способ настроить предварительную фиксацию, чтобы она загружала и настраивала необходимые пакеты из Anaconda? У меня есть ограничение, что на данный момент все должно поступать из репозиториев Anaconda (поэтому я рассматриваю возможность использования локального репо с language: system). - person Ryan; 04.06.2021
comment
Чтобы прояснить, я думаю, что кое-что выяснилось, за исключением того, можно ли загружать вещи из репозиториев Anaconda main / conda-forge. Возможно ли это в настоящее время или потенциальный запрос функции (например, добавить язык: python-conda)? - person Ryan; 04.06.2021
comment
уже есть language: conda - и да, types контролирует, какие файлы запускаются, - в котором говорится, что это отдельные вопросы (комментарии удаляются на SO часто) и могут быть полезны как отдельные вопросы и ответы - person Anthony Sottile; 05.06.2021