특정 디렉토리의 파일이 수정 된 경우에만 git pre-commit hook 실행


11

git pre-commit hook에 대한 bash 스크립트를 만들려고합니다. 커밋이 이루어질 때마다 특정 디렉토리의 파일이 준비된 파일의 일부인지 확인하고 그렇다면 명령을 실행하십시오 (그런트 작업). 지금까지 특정 파일이 수정 된 경우에만 실행을 제외하고는 모든 것이 작동합니다. 이 작업을 수행하려고합니다.

SRC_PATTERN="site/assets/js/"
if [ grep --quiet $SRC_PATTERN `git diff --cached --name-only` ]
then
  echo "none"
  exit 0
fi

불행히도 오류가 발생합니다.

답변:


9

시험,

git diff --cached --name-only | if grep --quiet "$SRC_PATTERN"
then
    ...

행복한 해킹


8

다음과 같이 시도하십시오.

SRC_PATTERN="site/assets/js/"
if git diff --cached --name-only | grep --quiet "$SRC_PATTERN"
then
  echo "none"
  exit 0
fi

이것은 받아 들일 수있는 대답과 매우 비슷하지만 그 답은 잘못되었습니다. bash / sh에서 파이프 라인의 각 명령은 별도의 하위 셸에서 실행되므로 then 부분의 종료는 하위 셸 만 종료하고 fi를 따르는 모든 코드는 여전히 실행됩니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.