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

SVN 커밋 로그를 자동으로 ChangeLog 파일에 기록

반응형

* 출처:

http://superkkt.com/406

<주의> 실제로 사용해보니 별 도움이 안된다. 오히려 문제가 더 많이 생겨서 지금은 사용을 안한다.
 

팀원들에게 TRAC을 열심히 사용하라고 해놓고, 변경사항이 생길때마다 소스트리에 있는 ChangeLog 파일도 갱신하라고 강요하는건 좀 아닌것 같다.

그래서 커밋이 발생할 때마다 로그 메세지를 자동으로 ChangeLog 파일에 추가하는 SVN hook script를 만들어봤다.

우선 첨부된 add_changelog.py 파일을 SVN 레포지토리의 hooks 디렉토리에 복사하고 실행 권한을 적절하게 부여한다. 그 전에 Subversion Pyhton Binding이 설치되어 있어야 하는데, 우분투라면 python-subversion 패키지를 설치하면 된다.

그리고 post-commit 파일에 다음과 같은 내용을 추가하고, TRAC_ENV 변수를 본인의 TRAC이 설치된 경로로 적절하게 변경한다.

아래 예제는 커밋 메시지가 프로젝트 소스트리의 trunk/ChangeLog 파일에 역순으로 추가되도록 만들어준다. 참고로 소스트리에 이 파일이 존재하지 않는 경우는 커밋을 할 때 에러 메시지가 여러 줄 나오지만 커밋은 정상적으로 이루어진다.

REPOS="$1"
REV="$2"
TRAC_ENV="/data/trac"
SVNLOOK="/usr/bin/svnlook"
AWK="/usr/bin/awk"
GREP="/bin/grep"
CHANGELOG_FILE="trunk/ChangeLog"
 
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
 
# 커밋 메세지가 "[NOC]"로 시작하면 ChangeLog파일을 갱신하지 않는다.
export LANG="ko_KR.UTF-8"
MSG=`$SVNLOOK log -r $REV $REPOS`
echo "$MSG" | $GREP "^\[NOC\]"
if [ $? -ne 0 ]; then
       $REPOS/hooks/add_changelog.py "$REPOS" "/$PROJECT_NAME/$CHANGELOG_FILE" "* $MSG"
fi

add_changelog.py
다운로드
반응형