티스토리 뷰
발생일: 2014.02.14
키워드: git, githook, 깃훅, pre-commit
문제:
우리 프로젝트에서는 커밋 훅에서 npm 으로 패키지 관리를 하고 있고, shrinkwrap 으로 버전을 잠궈두고 있다.
누군가 package.json 파일을 변경한 후에 커밋하는 경우엔, 확인 메시지를 받아 shrinkwrap 을 업데이트하도록 가이드하려고 한다.
커밋 전(pre-commit 훅에서) 특정 파일이 변경된 것을 확인할 방법이 있을까?
해결책:
깃훅에서 아래와 같은 방법으로 처리했다.
<pre-commit>
# 커밋 대상 파일에 package.json이 포함되었는지 확인
PACKAGE_JSON_CHANGED=$(git diff --cached --name-only --diff-filter=ACM | grep package.json)
# shrinkwrap 실행을 위한 커맨드
COMMANDS=("npm prune" "npm shrinkwrap" "git add $PROJECT_DIR/npm-shrinkwrap.json")
# 파일이 변경되지 않았다면 종료
[[ -z $PACKAGE_JSON_CHANGED ]] && exit 0
# 변경된 경우엔 shrinkwrap 을 실행한다
for CMD in "${COMMANDS[@]}"; do
$CMD
if [[ $? -ne 0 ]]; then
echo "$CMD 에 실패했습니다. 확인 후 다시 시도해주세요."
exit 1
fi
done
exit 0
참고:
반응형
댓글
공지사항