본문 바로가기
【🧰 SW Info & Tips】/SVN

SVN 커밋 메시지가 자동으로 TRAC의 티켓에 등록되도록 만드는 방법

반응형

* 출처:

http://superkkt.com/398

SVN 커밋 메시지에 특정 명령어를 넣어주면 해당되는 TRAC의 티켓에 댓글로 등록되도록 할 수 있다. 역시 SVN hook 스크립트를 사용한다.

커밋 메시지에 사용할 수 있는 명령어는 티켓을 닫을 수 있는 close, 커밋 메시지를 티켓에 등록하는 refs 등이 있다. 자세한건 스크립트에 있는 주석을 참고하고, 보통 커밋 메시지를 티켓에 등록하는 re, refs, references, see (모두 동일한 기능)를 많이 사용한다. 아래는 사용예이다.

# svn commit -m "커밋 메시지입니다. (see #140)"

우선 SVN 서버에서 이 기능을 적용하려는 레포지토리의 hooks 디렉토리에 post-commit 파일을  아래와 같이 만들어준다.

#!/bin/sh
 
# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit. Subversion runs
# this hook by invoking a program (script, executable, binary,
# etc.) named 'post-commit' (for which
# this file is a template) with the following ordered arguments:
#
#   [1] REPOS-PATH   (the path to this repository)
#   [2] REV          (the number of the revision just committed)
#
 
REPOS="$1"
REV="$2"
TRAC_ENV="/data/trac"
SVNLOOK="/usr/bin/svnlook"
AWK="/usr/bin/awk"
 
PROJECT_NAME=`$SVNLOOK changed -r $REV $REPOS | $AWK -F" " '{print $2}' | head -1 | $AWK -F"/" '{print $1}'`
 
# 해당 프로젝트의 TRAC이 존재하는 경우 티켓에 커밋 메시지를 코멘트로 등록
if test -d "$TRAC_ENV/$PROJECT_NAME" ; then
    $REPOS/hooks/trac-post-commit-hook.py -p "$TRAC_ENV/$PROJECT_NAME" -r "$REV"
fi
 
여기서 TRAC_ENV 변수값을 본인이 사용 중인 TRAC의 경로로 바꿔주어야 한다. 그리고 첨부 파일로 저장된 trac-post-commit-hook.py 파일을 같은 경로에 만들어 준다.

마지막으로 두 파일의 실행권한을 켜준다.

# chmod 755 post-commit trac-post-commit-hook.py

그리고 주의할 점이 SVN 커밋을 하는 사용자가 TRAC 경로에 쓰기 권한이 있어야 한다. 따라서 커밋 권한을 줄 사용자들을 users라는 그룹에 등록하고, TRAC 경로에 있는 모든 파일들에 users 그룹이 쓰기 권한을 가지도록 만들어 준다.

# sudo chgrp -R users /your-trac-dir
# sudo chmod -R g+w /your-trac-dir

trac-post-commit-hook.py
다운로드
반응형