Я работаю над интерактивным Git Hook с предварительной фиксацией, чтобы обеспечить выполнение определенного набора критериев до фиксации (например, обновление определенных файлов в репо). Я основывал свой контрольный список на примере здесь . Мой хук имеет идентичную реализацию, но имеет другой текст вопроса. В настоящее время он отлично работает в Git Bash.
Однако для реализации всей команды мне нужно, чтобы она работала в IntelliJ, так как большинство разработчиков используют функциональность Git в IDE. Используя приведенный выше пример ловушки, мои коммиты завершаются с ошибкой:
0 files committed, 1 file failed to commit: COMMIT TEST MESSAGE Would you like to play a game? .git/hooks/pre-commit: line 6: /dev/tty: No such device or address
Я бы хотел, чтобы полное взаимодействие содержалось в IntelliJ, если это возможно. Если это невозможно, я бы начал изучать разработку плагинов IntelliJ, чтобы реализовать это в рамках организационных ограничений.
Для удобства привязанный выше крючок Git вставлен ниже.
#!/bin/sh
echo "Would you like to play a game?"
# Read user input, assign stdin to keyboard
exec < /dev/tty
while read -p "Have you double checked that only relevant files were added? (Y/n) " yn; do
case $yn in
[Yy] ) break;;
[Nn] ) echo "Please ensure the right files were added!"; exit 1;;
* ) echo "Please answer y (yes) or n (no):" && continue;
esac
done
while read -p "Has the documentation been updated? (Y/n) " yn; do
case $yn in
[Yy] ) break;;
[Nn] ) echo "Please add or update the docs!"; exit 1;;
* ) echo "Please answer y (yes) or n (no):" && continue;
esac
done
while read -p "Do you know which issue or PR numbers to reference? (Y/n) " yn; do
case $yn in
[Yy] ) break;;
[Nn] ) echo "Better go check those tracking numbers!"; exit 1;;
* ) echo "Please answer y (yes) or n (no):" && continue;
esac
done
exec <&-