Я написал git ловушку предварительной фиксации, которая выполняет следующие действия:
- Sta sh любые изменения, которые не подготовлены для фиксации
- Выполнение тестов
- Unsta sh изменения
Цель состоит в том, чтобы предотвратить ложноположительные или ложноположительные результаты при прохождении тестов / компиляции, когда поэтапные изменения зависят от неустановленных изменений. Как правило, ловушка работает очень хорошо и уловила много ошибок с моей стороны.
Однако, как реализовано, она плохо взаимодействует с git add -p
:
- Изменения стадии с
git add -p
а затем git commit
- Сценарий выполняется:
git stash push -m "pre-commit-${DATE} on ${BRANCH}" -k -u -q
- тесты пройдены / не пройдены
git stash pop -q
запущен и приводит к конфликту, разрушающему мой день и отменяющему коммит
Мой обходной путь, по сути, заключался в том, чтобы либо сам использовать git commit --no-verify
, либо sta sh, если я когда-либо использую git add -p
. Однако я обновляю свои git хуки и хочу обновить или заменить функциональность sta sh, чтобы позволить мне запускать тесты только для поэтапных изменений, больше не конфликтуя с git add -p
. Is есть способ:
- предварительно определить, будет ли sta sh конфликтовать, и отложить его после генерации коммита
- использовать механизм, отличный от sta sh, который хорошо работает в
pre-commit
сценарии - «отменить» всплывающее окно при возникновении конфликта слияния