git ловушка перед фиксацией: взаимодействие между git add -p и git stash - PullRequest
1 голос
/ 16 марта 2020

Я написал git ловушку предварительной фиксации, которая выполняет следующие действия:

  1. Sta sh любые изменения, которые не подготовлены для фиксации
  2. Выполнение тестов
  3. Unsta sh изменения

Цель состоит в том, чтобы предотвратить ложноположительные или ложноположительные результаты при прохождении тестов / компиляции, когда поэтапные изменения зависят от неустановленных изменений. Как правило, ловушка работает очень хорошо и уловила много ошибок с моей стороны.

Однако, как реализовано, она плохо взаимодействует с git add -p:

  1. Изменения стадии с git add -p а затем git commit
  2. Сценарий выполняется: git stash push -m "pre-commit-${DATE} on ${BRANCH}" -k -u -q
  3. тесты пройдены / не пройдены
  4. 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 сценарии
  • «отменить» всплывающее окно при возникновении конфликта слияния
...