본문 바로가기

[뭘, 이런걸 다?]

[뭘, 이런걸 다?] 윈도우용 grep 툴 findstr 을 이용한 SVN Hooking (부제:commit 시 comments 강제화 하기)

윈도우에서 쉘 스크립트를 사용하기 위해서 cygwin 을 사용하거나 powershell 등을 사용하는 경우가 종종 있습니다. 특히 svn hook script 등을 사용하고자 할 때 더욱 그렇죠.

이럴때 위와 같은 유틸리티를 설치하지 않고도 간단 유용하게 쓸 수 있는 윈도우 커맨드가 findstr 이라는 커맨드 입니다. grep 비슷하게 사용할 수 있습니다.

상세참조 : http://technet.microsoft.com/en-us/library/bb490907.aspx

svn 설치 디렉터리 하위에 hook 폴더가 있습니다. 그 안에 UNIX/LINUX의 경우에는 .sh 파일로, 윈도우일 경우에는 .bat 파일로 스크립트를 만들어 주면 됩니다. 다음은 pre-commit.bat 라고 만들어서 넣어놓은 스크립트 파일입니다. commit 할때 주석을 달지 않고 무의식적으로 commit 하는 걸 막아주는 스크립트 입니다.

아래 스크립트는 findstr 로 commit 때의 코멘트를 비교해서 아무것도 없으면 GOTO NOTOK 로 JUMP 하게 만들어 놓은 예제입니다. hook script의 exit 코드가 1 이면 commit 이 실패하게 됩니다. 0 이면 정상 commit 이 일어나고요.

## pre-commit.bat ##

echo %1 %2 >> c:\result.txt
svnlook log %1 -t %2 | findstr /I . >> c:\result.txt || GOTO NOTOK
exit 0

:NOTOK
echo " " >&2
echo "Commit Comments is required!!!" >&2
exit 1
 
단 이때 svnlook 이라는 실행파일은 path 내에 존재해야 합니다. 아니경우 full path 를 적어주시면 되고요.
예) c:\svn\svnlook .......


올 봄에 프로젝트때에 작성했던 스크립트인데, 미리 정리 안해놓았었더니 상세 내용은 많이 까먹었네요. :)

참조 : http://doortts.textcube.com/20