Subversion 의 로그 메시지를 수정하는 기능은 기본적으로 막혀있습니다.
왜냐하면 로그 메시지를 바꾸는 일은 리비전이 남지 않기 때문입니다. 즉, 데이터를 날릴 수 있는 가능성이 존재하므로 이는 롤백조차 리비전으로 남기는 섭버전의 타임머신 철학상 그다지 추천할만한 기능이 아닙니다.
그래서 섭버전은 로그 메시지 수정, 즉 리비전 속성 변경 (revision properties change) 의 경우에는 무조건 pre-revprop-change 훅 스크립트가 있어야 실행됩니다. 만약 스크립트가 없다면 로그 메시지를 수정할려고 할 때 아래와 같은 에러 메시지를 볼 수 있습니다.
섭버전 배포판에 기본적으로 pre-revprop-change 예제가 포함되어 있지만 이것은 리눅스 계열의 쉘 스크립트이기 때문에 윈도우 기반에서는 따로 작성해야 합니다.
정말 새로 작성해야 될까 하는 의문을 품고 섭버전 유저들의 제 2의 바이블인 TortoiseSVN 의 도움말을 뒤져보다 보면 “4.3. Hook Scripts” 섹션에서 아래와 같은 윈도우 용 pre-revprop-change.bat 예제를 찾을 수 있습니다.
rem Only allow log messages to be changed.
if "%4" == "svn:log" exit 0
echo Property '%4' cannot be changed >&2
exit 1
pre-revprop-change.bat
이렇게 pre-revprop-change.bat 를 만들어주면 로그 수정이 가능해집니다. 그런데 trac 을 같이 사용하고 있다면 로그 수정을 해도 트랙의 Timeline 이나 Browse Source 에서 표시되는 섭버전 로그들은 수정되지 않는다는 것을 발견하게 될 겁니다. 따라서 로그 수정시 trac 과 자동으로 싱크를 맞춰주는 기능을 구현해줘야 합니다.
이 기능은 수정된 로그를 반영하는 것이므로 pre-revprop-change 가 아닌 post-revprop-change 에 구현해야 합니다. 안그러면 수정된 로그 메시지가 반영되지 않습니다. trac 과 subversion 다시 싱크 맞추기를 참고해서 아래와 같이 post-revprop-change 스크립트를 만들어주면 됩니다.
rem Only resync when log messages are changed.
if "%4" == "svn:log" C:\Python25\scripts\trac-admin.exe (trac_proj_dir) resync
post-revprop-change.bat
파이썬 경로와 (trac_proj_dir) 은 자신의 환경에 맞게 수정해주도록 합니다. ![]()

This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.0 Korea License.
관련된 포스트들
Tags: Subversion, trac


4 comments
Comments feed for this article
Trackback link
http://j.strane.net/wp/archives/99/trackback
2008/04/02 at 12:59
rein
OFFS 류의 경우 자주 보게되는 현상?문제?인 것 같지만,
* 매뉴얼의 완성도는 사용자 수에 비례
* 프로그램의 완성도도 사용자 수에 비례
…
그래서 사용자가 많은 편인 SVN 같은 경우엔 이런 식의 매뉴얼? 로그?가 많아서 쓸만한데, 조금만 특이한 쪽으로 (사용자 층이 적은 쪽으로) 뭘 하려면 소스 뜯어보는 일들이 왕왕 생기는 느낌 Orz
2008/04/02 at 13:11
J.Strane
rein// 네, 확실히 그렇죠. SVN 만 해도 서버와 관련된 부분은 svnbook 을 찾아보고 윈도우에 관련된 부분은 TortoiseSVN 의 도움말을 뒤져봐야 할 때가 많습니다.
참고로 윈도우 서버에 아파치와 섭버전을 설치하는 방법은 TortoiseSVN 의 도움말이 더 충실하게 되어있더군요[..]
2008/04/02 at 14:06
addnull
최근에 svn 콘솔 버전을 쓰다보니 log 수정이 기본 지원 기능이 아닌걸 알고 놀랬음..
머.. 지금 생각해보니 본문에서 표현했던대로 “svn 타임머신 철학” 상 log 를 수정하는 일은 그리 권장할 만한 일이 아닌듯.
2008/04/02 at 14:19
J.Strane
addnull// 네, 섭버전은 확실히 타임머신 철학을 강력하게 밀어붙이고 있죠.
덕분에 뭘해도 데이터를 날릴 걱정은 하지 않아도 되니 편하긴 합니다. 이렇게 로그 메시지조차도 날아갈까봐 신경써둔 것을 보면 믿음도 꽤 가구요.