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) 은 자신의 환경에 맞게 수정해주도록 합니다. ![]()


Recent Comments