Git Hook에 프롬프트가 표시되나요?

Git Hook에 프롬프트가 표시되나요?

사전 커밋 후크에서 사전 커밋 후크를 건너뛰는 옵션을 구현하려고 합니다(이는 통과로 간주되어 커밋이 수행됩니다).

프롬프트가 빈 문자열("")을 읽는 것을 제외하면 모든 것이 잘 실행되므로 스위치가 기본 "잘못된 인수"로 전환되어 무한 루프가 발생합니다.

사전 커밋이 어떻게 작동하는지에 대해 오해가 있어서 이 동작이 발생하는 것 같습니다. 이에 대해 설명하고 가능하다면 해결책을 제안해 주실 수 있나요?

while true; do
  read -p "Do you want to run pre-commit hook? (N=pass) [Y/N]: " choice
  
  #tried alternative approach, but no success.
  #echo "Do you want to run pre-commit hook? (N=pass) [Y/N]: "
  #read choice
  echo "Debug: response=\"$choice\""
  case $choice in
    [Yy]* )
      echo "Running pre-commit hook...";
      break;;
    [Nn]* )
      echo "Skipping pre-commit hook. This is evaluated as passed.";
      exit 0;;
    * )
      echo "Invalid input. Please enter 'y' or 'n'.";;
  esac
done

답변1

Git은 대화형 환경에서 후크를 실행하지 않기 때문에 이는 예상된 동작인 것 같습니다.

일부 빠른 Google 검색이 공개되었습니다.이 문제, 거의 동일해 보입니다. 참조의 용이성을 위해 허용되는 답변에는 exec < /dev/tty후크의 일부로 실행하여 표준 입력을 열 수 있다고 명시되어 있습니다. 이는 기존 명령보다 먼저 수행되어야 read의도한 대로 표준 입력에서 읽을 수 있습니다.

관련 정보