doortts / blog

0 stars 0 forks source link

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

Open doortts opened 15 years ago

doortts commented 15 years ago

@doortts (doortts) 님이 작성한 게시글입니다. ---

doortts | 2009-11-09 월요일 오후 1:36 | [뭘, 이런걸 다?] | 원본

윈도우에서 쉘 스크립트를 사용하기 위해서 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 .......

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

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

--- attachments --- XIOCdwnSoV[1].png