본문 바로가기
Programming

VisualSVN에서 Hook 스크립트.

by 신규하 2010. 12. 27.
이번에 VisualSVN으로 서버를 옮기면서, hook 스크립트를 추가해 봤습니다.

현재는 두가지 체크를 하고 있습니다.
  1. 빈 로그 메시지
  2. 이슈 번호가 들어 있는지

이슈 번호는 레드마인을 사용하고 있어서.. #[숫자] 이런 식으로 되어 있습니다.
간단하게 #과 숫자가 붙은게 있는지를 체크 합니다.

VisualSVN에서 프로젝트의 마우스 오른쪽을 클릭후 메뉴에서
모든 작업 > Manage Hooks

를 선택합니다.

위와 같은 메뉴에서 Pre-commit hook를 선택하고 편집을 합니다.


이 화면에서 아래 내용을 붙여 넣습니다.
@echo off
::
:: 로그 메시지가 없거나 이슈번호가 없으면 commit 중단
::
@echo off
 
setlocal
 
set REPOS=%1
set TXN=%2
 
set SVNLOOK="C:\Program Files (x86)\VisualSVN Server\bin\svnlook.exe"
 
%SVNLOOK% log %REPOS% -t %TXN% | findstr . > nul
if %errorlevel% gtr 0 (goto ERROR_TOO_SHORT)

%SVNLOOK% log %REPOS% -t %TXN% | findstr /r /c:"#[0-9]" > nul
if %errorlevel% gtr 0 (goto ERROR_ISSUE) else (goto NORMAL_EXIT)

:ERROR_TOO_SHORT
echo Your commit has been blocked because your log message was too 1>&2
echo short. Please write a log message describing the purpose of your 1>&2
echo changes and then try committing again. Thanks! 1>&2
goto ERROR_EXIT

:ERROR_ISSUE
echo empty issue, please fill issue number 1>&2
echo changes and then try committing again. Thanks! 1>&2
echo example : #000 hello world 1>&2
goto ERROR_EXIT
 
:ERROR_EXIT
exit /b 1
 
:NORMAL_EXIT
exit 0
17, 18번 행이 이슈트래커용입니다.

그리고, 36bit용 windows를 설치 하신 분들은 13번 행에서 (x86)을 빼 주셔야 합니다.

필요 하신 분들은 잘 사용하세요.

참고 사이트 :

댓글