태그 미디어로그 위치로그
'subversion'에 해당되는 글 1건
Subversion 커밋 로그 변경하기 (svn hook)
개발자 세상

안녕하세요? phlow입니다.

소프트웨어 버전 관리 도구로 subversion을 많이 사용하시죠?혹시 커밋 후에 아차하고 커밋 로그를 수정하고 싶은 생각이 드셨던 적은 없나요?

이미 커밋 해버렸는데… 작장불입?

아닙니다. 방법이 있습니다!

서실 저는 subversion의 다양한 기능을 활용할 일이 별로 없는데,

윈도우즈에서 작업하는 경우에는 svn 클라이언트로 TortoiseSVN을 사용합니다. (한번 사용해보시길 강력 추천합니다.)

덕분에 최근에 커밋 로그를 수정할 수 있는 방법을 알게 되어 공유하려 합니다.

http://svnbook.red-bean.com/en/1.0/ch05s02.html 에 모든 내용이 있습니다.

커밋 로그 뿐 아니라 다른 정보도 수정 가능합니다.

일단 커밋 로그를 수정할 수 있도록 하는 간단한 예제만 적어보겠습니다.

Repository 설정

일단 repository에서 커밋 로그를 수정할 수 있도록 hook파일을 설정해야 합니다.

Repository의 ‘hooks’ 디렉토리로 갑니다.

커밋 로그 수정과 관련된 파일은 ‘pre-revprop-change’ 이라는 파일인데,

이미 존재할 수도 있고 ‘pre-revprop-change.tmpl’이라는 예제(템플릿?)가 있을 수 있습니다). 없으면 생성해야 합니다.

훅을 위한 언어가 정해져 있는 것은 아닙니다. 아래에 있던 예제는 쉘스크립트로 작성되어 있습니다.

훅 파일은 아래와 같이 설정합니다.

디렉토리에 파일이 잘 설정되었다 하더라도 실행권한이 없으면 훅이 동작하지 않습니다.

따라서 ‘pre-revprop-change’ 파일에 실행권한을 줍니다.

  1. #!/bin/sh  
  2. # PRE-REVPROP-CHANGE HOOK  
  3.   
  4. REPOS="$1"  
  5. REV="$2"  
  6. USER="$3"  
  7. PROPNAME="$4"  
  8. ACTION="$5"  
  9.   
  10. if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi  
  11.   
  12. echo "Changing revision properties other than svn:log is prohibited" > &2  
  13. exit 1  

위의 파일을 보시면 알겠지만,

위의 훅은 기본적인 것이고, 사용자 별로 커밋 로그 수정을 제한하거나 이외의 다른 작업도 스크립트를 적절히 작성하면, 충분히 설정이 가능합니다.

http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/
http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/

위의 주소에 더 많은 훅 예제가 있다고 하는군요. 관심있으신분 참고하세요.

클라이언트에서 커밋 로그 수정

위의 설정이 잘되어 있다면 아래의 명령어로 간단하게 커밋 로그를 수정할 수 있습니다.
svn propset --revprop -r [리비전번호] svn:log “수정할 메세지”

뒤숭숭한 뉴스가 많군요. 그래도 평온하고 차분한 한주 보내시길 바랍니다.