Subversion 에서 로그 메시지 수정이 안된다?

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 을 같이 쓰고 있을 때

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

Bookmark and Share
Creative Commons License
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.0 Korea License.

관련된 포스트들

Tags: , ,

  1. rein’s avatar

    OFFS 류의 경우 자주 보게되는 현상?문제?인 것 같지만,
    * 매뉴얼의 완성도는 사용자 수에 비례
    * 프로그램의 완성도도 사용자 수에 비례

    그래서 사용자가 많은 편인 SVN 같은 경우엔 이런 식의 매뉴얼? 로그?가 많아서 쓸만한데, 조금만 특이한 쪽으로 (사용자 층이 적은 쪽으로) 뭘 하려면 소스 뜯어보는 일들이 왕왕 생기는 느낌 Orz

    Reply

  2. J.Strane’s avatar

    rein// 네, 확실히 그렇죠. SVN 만 해도 서버와 관련된 부분은 svnbook 을 찾아보고 윈도우에 관련된 부분은 TortoiseSVN 의 도움말을 뒤져봐야 할 때가 많습니다.

    참고로 윈도우 서버에 아파치와 섭버전을 설치하는 방법은 TortoiseSVN 의 도움말이 더 충실하게 되어있더군요[..]

    Reply

  3. addnull’s avatar

    최근에 svn 콘솔 버전을 쓰다보니 log 수정이 기본 지원 기능이 아닌걸 알고 놀랬음..
    머.. 지금 생각해보니 본문에서 표현했던대로 “svn 타임머신 철학” 상 log 를 수정하는 일은 그리 권장할 만한 일이 아닌듯.

    Reply

  4. J.Strane’s avatar

    addnull// 네, 섭버전은 확실히 타임머신 철학을 강력하게 밀어붙이고 있죠.
    덕분에 뭘해도 데이터를 날릴 걱정은 하지 않아도 되니 편하긴 합니다. 이렇게 로그 메시지조차도 날아갈까봐 신경써둔 것을 보면 믿음도 꽤 가구요.

    Reply

  5. yh9589’s avatar

    섭버전 재설치 이후에 로그 수정이 안되었는데, 구글에서 검색하여 좋은 정보 얻고갑니다. (__)
    형 잘 지내시죠? ㅎㅎ

    Reply

    1. J.Strane’s avatar

      오랜만이구나~ 섭버전 재설치라니 ㅎㅎ 고생이 많구나.
      나는 수강신청 준비하는데 뭘 들을지 고민하는 중이지ㅠ
      너도 잘 지내지?

      Reply

      1. yh9589’s avatar

        ㅎㅎ 네 방학이라 매주 풀패치해야하는것만 제외하면 좋은 나날들이에요 ㅠㅠ
        회사 부근 한번 놀러오셔요 ㅎㅎ 오시기만 하면야 준엽옹이 뭔갈 사주지 않을까요? ㅋㅋ

        Reply

        1. J.Strane’s avatar

          헉 … 방학이라 바쁘구나 ㅎㅎ 매주 패치라니 …
          언제 시간되면 준엽옹도 볼 겸 들릴게~ 옹 월급 많이 모아두셨겠지!

          Reply