укажите, какой хук пропустить при git commit --no-verify

Есть ли способ указать, какой именно git-hook пропускать при использовании --no-verify? Или для этого есть другой флаг, кроме --no-verify? Может, просто флаг, чтобы пропустить только pre-commit?

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

Бывают случаи, когда я хотел бы --no-verify pre-commit, но все же хотел бы, чтобы commit-msg работал.

Кажется, есть много сообщений SO, похожих на это, но ничего похожего на выборочный пропуск с --no-verify.


person Jeremy    schedule 04.04.2018    source источник


Ответы (2)


Пропуская

Если вы можете изменить перехватчики, вы можете добавить переключатель для каждого из них.

Пример конкретного переключателя проверки из pre-commit.sample:

# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --bool hooks.allownonascii)

Итак, чтобы включить переключение всего pre-commit хука, это можно добавить в его начало:

enabled="$(git config --bool hooks.pre-commit.enabled)"

if test "$enabled" != true
then
    echo 'Warning: Skipping pre-commit hook...'
    exit
fi

Пример использования:

git -c hook.pre-commit.enabled=false commit

Сглаживание

Примечание: оба типа псевдонимов перерыв завершение табуляции.

git alias может упростить это:

git config --global alias.noprecommit \
  '!git -c hook.pre-commit.enabled=false'

При этом вы можете зафиксировать и пропустить ловушку с помощью следующего вызова:

git noprecommit commit

Вы также можете использовать оболочку alias (например: ~/.bashrc):

alias gitnoprecommit='git -c hook.pre-commit.enabled=false'

Пример использования:

gitnoprecommit commit
person kelvin    schedule 03.08.2018
comment
Например. git -c hooks.pre-commit.enabled=false cherry-pick --continue. Вам необходимо добавить значение по умолчанию в git config (как одноразовое), например: git config hooks.pre-commit.enabled true - person avjaarsveld; 02.10.2019

Если вы хотите зафиксировать и обойти один хук перед фиксацией, используйте

SKIP = имя_хука git commit -m commit_message

Переменная среды SKIP представляет собой список идентификаторов ловушек, разделенных запятыми. Это позволяет вам пропустить одну ловушку вместо --no-проверки всего коммита.

SKIP = flake8, mypy git commit -m commit_message

person Abilash B    schedule 16.04.2021