티스토리 뷰

발생일: 2014.02.14

키워드: git, 깃, git hook, 깃훅, 소스트리, source tree

문제:
터미널에서 잘 실행되는 깃훅이 소스트리에서는 오류를 발생한다.
확인해보니, 깃훅에 포함된 명령을 소스트리에서는 찾지 못하고 있다.

뭐가 문제일까?


해결책:
소스트리의 앱 구동 환경이 사용자 계정의 PATH 정보와 달랐기 때문이었다.

문제가 발생했던 깃훅은 아래와 같이 커밋 전에 grunt 명령으로 린트를 실행하는 코드였다.

AS-IS:
<pre-commit>
grunt jshint


grunt 명령은 사용자 계정에서 글로벌로 설치한 명령이었고, /etc/paths 에 정의되어 있었다.
소스트리의 구동 환경을 정확히 알아보진 않았지만, /etc/paths 의 것을 참조하고 있진 않은 모양이었다.

모든 멤버의 환경을 바꾸자니 너무 비효율적이어서,
훅에서 /etc/paths 정보를 가져와 PATH 변수를 업데이트하는 방식으로 해결했다.

TO-BE:
<pre-commit>
# 소스트리에서 앱 환경의 PATH가 터미널의 PATH와 다른 것 때문에
# /etc/paths 에 정의된 목록을 PATH 변수로 추가함
LOCAL_PATHS=( $(cat /etc/paths) )

for LOCAL_PATH in "${LOCAL_PATHS[@]}"; do
    PATH=$LOCAL_PATH:$PATH
done

grunt jshint

반응형
댓글
공지사항