http://yshmnet.homelinux.com/wordpress/?p=311
SVN commit을 trac과 연동하여 특정 동작을 수행하도록 지정할 수 있다.
trac에서는 bug, 개발작업, 등의 내용을 ticket을 작성하여 관리한다. ticket을 작성하는 경우 일반적으로, ticket을
open한다고 한다.
ticket을 open하면, 해당 ticket의 내용을 보고, 관련 작업이 source와 관련된 경우, source
code작업을 완료한 후 ticket을 close한다.
이때, ticket을 close하는 작업을 svn commit시에 자동으로 이루어
지도록 할 수 있다.
실제로는, svn commit이 발생할때 log를 hooking해서, 해당 log에 ticket 정보가 있는지 확인하고, ticket정보가
있다면,
해당 ticket을 close하거나, 해당 ticket에 log를 남기게 된다.
post-commit hook template으로부터 post-commit hook script 생성
svn의 hook은 commit외에 다른 작업에도 사용할 수 있도록 다양한 script들을 제공하지만, commit이 완료된 이후에 적용될
수 있도록 한다.
hook은 각 repository별로 따로 지정할 수 있고, 각 repository의 hooks에 hook을 위한
template들이 준비되어 있다.
먼저, 다음과 같이 post-commit hook template를 복사하고, 실행 속성을 준다.
/svnroot/project/hooks# cp post-commit.tmpl post-commit
/svnroot/project/hooks# chmod 755 post-commit
복사한, post-commit의 내용을 아래와
같이 svnlook을 이용하도록, 수정한다.
/svnroot/project/hooks# vi post-commit
...
REPOS="$1"
REV="$2"
#commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
#log-commit.py --repository "$REPOS" --revision "$REV"
SVNLOOK=/usr/bin/svnlook
LOG=`$SVNLOOK log -r "$REV" "$REPOS"`
AUTHOR=`$SVNLOOK author -r "$REV" "$REPOS"`
DIRS="`$SVNLOOK dirs-changed
-r "$REV" "$REPOS"`"
$REPOS/hooks/trac-post-commit-hook -p /tracroot/project
\
-r "$REV" -u "$AUTHOR" -m "$LOG"
이 hook은 svn에서 commit시에 repository
정보, revision 정보, 사용자 정보와 log message를 trac-post-commit-hook에 전달하게
된다.
Trac source package로부터 trac-post-commit-hook 생성
trac-post-commit-hook은 Trac source package의 contrib directory에서 제공되므로, 다음과 같이
복사해서 그대로 사용한다.
/svnroot/project/hooks# cp /trac-0.11.5/contrib/trac-post-commit-hook .
/svnroot/project/hooks# chmod 755 trac-post-commit-hook
svn commit시에
ticket을 close하거나, comment 저장 방법
svn commit시에 trac의 ticket에 그 정보를 전달하여, 2가지 action을 취할 수 있는데, ticket을
close하거나, log정보를 저장하고, ticket의 상태는 변경하지 않는것이다.
다음은 ticket을 close하기 위하여 log message에 포함되어야 하는 내용이다. 여기서는 ticket 5번과 10번인 경우를
예로 든다.
close #5, #10
close #5 & #10
close #5 and #10
close ticket:5,
ticket:10
“close”대신에, “closed”, “closes”, “fix”, “fixed”, “fixes”등을 사용할 수
있으며, commit log에 위의 내용들이 포함된 경우 ticket은 close된다.
ticket을 close하지 않고, 현재까지 작업한 내용에 대한 commit log message를 추가할 수 있다.
refs #5, #10
refs #5, #10
refs #5 & #10
refs #5 and #10
refs ticket:5, ticket:10
“refs”대신에, “references”, “addresses”, “re”,
“see”등을 사용할 수 있으며, 위와 같이 사용된 경우 ticket의 status는 변경되지 않고, log message가
추가된다.
|