오리 대 마왕 님 집 : Trac 과 SVN 연동 : svn revision -> trac ticket 연동 
 Trac 과 SVN 연동 : svn revision -> trac ticket 연동 by 오리 대 마왕 
 2008 / 09 / 29 20 : 03 
 kingori . egloos . com / 3922223 
 Trac <--> SVN 연동 
 널리 쓰이 는 이슈 트래커 인 trac 은 자체 적 으로 svn 과 연동 이 된다 . 내장 된 svn repository 탐색기 도 꽤 훌륭 하 다 . 여기 에 svn 의 revision 과 특정 ticket 을 연동 하 는 기능 을 추가 적 으로 제공 한다 . 즉 , 이번 에 commit 된 내용 이 어떤 ticket 에 관련 된 내용 인지 를 인식 하 게 하 는 것 이 다 
 제대로 연동 될 경우 trac 상 에서 1 ) svn repository 탐색기 에서 관련 ticket 으로 이동 , 2 ) ticket 상세 보 기 에서 ticket 구현 을 위해 작업 한 svn revision 내역 조회 가 가능 하 다 . 이 에 대해 정리 된 문서 는 많 으나 , 일단 다시 한 번 정리 하 는 차원 에서 정리 해 본다 . 참고 로 window 기반 이 고 , 사용 한 trac 은 0 . 10 . 4 버전 이 다 . windows 에 trac 설치 하 는 가장 쉬운 방법 은 TOW ( Trac on windows ) 를 이용 하 는 것 이 다 . 정말 쉽 다 . 
 1 단계 : project 에 svn property 설정 
 svn 은 cvs 와 다르 게 property 라는 개념 이 있 어서 , 대상 파일 의 속성 등 을 상세히 정의 할 수 있 다 . trac 과 같 은 이슈 트래커 와 연동 하 기 위해 svn 은 bugtraq : 로 시작 하 는 몇 개 의 property 를 제공 한다 . 다음 은 내 가 설정 한 내용 이 다 . 아래 그림 에서 url 은 지워 버렸 는데 , 자신 의 trac 주소 를 입력 하 면 된다 . 
 참고 로 다른 property 는 내부 적 인 처리 에 사용 하 는 것 이 고 , bugtraq : label 은 commit 시 클라이언트 에서 표시 되 는 내용 이 다 . svn 의 property 는 commit 해야 적용 되 기 때문 에 여기 까지 하 고선 일단 commit 하 여 property 가 적용 되 도록 하 자 . 
 이제 property 가 적용 되 었 으므로 , commit 시 client 의 대화 창 이 약간 바뀌 어야 한다 . 내 경우 eclipse 의 subversive 를 사용 중 인데 , 다음 과 같이 바뀐다 . 위 에서 bugtraq : label 에 입력 한 내용 이 보인다 . 
 2 단계 : svn post commit hooking script 설정 
 이제 commit 할 때 " 지금 commit 한 것 은 어떤 issue 와 연관 된 것 들 입니다 " 라는 것 을 svn 에 알려 줬 다 . 이제 는 svn 이 이렇게 알 고 있 는 정보 를 직접 trac 등 의 이슈 트래킹 시스템 에 알려 줄 차례 이 다 . 이 를 위해 사용 되 는 것 이 svn 의 post commit hooking script 이 다 . svn repository 에 보 면 hooks 라는 디렉터리 가 있 고 , 여기 에 보 면 몇 개 의 템플 릿 들 이 미리 작성 되 어 있 다 . 우리 가 할 것 은 post - commit 시점 에 수행 되 어야 할 내용 을 작성 하 는 것 이 다 . post - commit . bat 파일 을 만들 고 , 다음 과 같이 입력 한다 . 이때 주의 할 것 은 post - commit . bat 에서 는 path 로 잡 아 놓 은 경로 가 먹히 질 않 기 때문 에 무조건 절대 경로 로 적 어 줘야 한다 . trac 의 post commit hooking script 는 python 으로 작성 되 어 있 으므로 아래 와 같이 python binary 위치 를 절대 경로 로 지정 해야 한다 . TOW 로 설치 했 으면 아래 위치 에 존재 한다 . 다음 은 post - commit . bat 내용 이 다 . 짧 다 . 
 C : \ TOW \ Python \ python . exe % 1 \ hooks \ trac - post - commit - hook . py % 1 % 2 
 3 단계 : trac 의 trac - post - commit - hook 설정 
 이건 좀 헷갈리 는데 , 원래 trac 에 들 어 있 는 것 인지 , 내 가 직접 설정 해 준 것 인지 모르 겠 네 . 하여간 , 나 는 trac - post - commit - hook . py 을 위 의 post - commit . bat 파일 과 같 은 위치 에 넣 었 다 . 내용 은 다음 과 같 다 . 아래 내용 중 절대 경로 로 된 부분 은 고쳐서 써야 한다 . 대략 수행 하 는 내용 은 " 방금 commit 된 svn revision 의 내용 은 이러이러 하 니 , ticket 의 change log 에 알 아서 남기 도록 해라 " 라는 것 같 다 . 
 repos + " - r " + rev ) . read ( ) . strip ( ) 
 + repos + " - r " + rev ) . read ( ) . strip ( ) 
 - p \"" + trac _ env +"\" \ 
 - r \"" + rev +"\" \ 
 - u \"" + author +"\" \ 
 - m \"" + log +"\"" \ 
 print >> f , time . strftime ( "% a , % d % b % Y % H : % M : % S + 0000 ", 
 print >> f , " repos : " + repos 
 print >> f , " rev : " + rev 
 print >> f , " author : " + author 
 print >> f , " log : " + log 
 print >> f , " trac _ env : " + trac _ env 
 print >> f , " result : " + result 
 # print >> f , rev 
 print >> f , "\ n ". join ( traceback . format _ list ( stack ) ) 
 print >> f , " Type : % s < br / >" % type 
 print >> f , " Value : % s < br / >" % value 
 아직 끝 이 아니 다 . 위 의 소스 를 보 면 C : \\ TOW \\ Python \\ Scripts \\ trac - post - commit - hook . py 이 라는 파일 이 언급 되 어 있 다 . 이것 이 진짜 알맹이 다 . 위 소스 는 단순히 " 이러이러 한 내용 이 있 으니 ticket 에 추가 해 주 세요 " 까지 던지 는 것 이 고 , 이 를 실제 추가 해 줘야 할 녀 식이 등장 한다 . 위 에 언급 한 C : \\ TOW \\ Python \\ Scripts \\ trac - post - commit - hook . py 파일 을 생성 하 고 다음 내용 을 넣 는다 . 
 # It should be called from the ' post - commit ' script in Subversion , such as 
 # - p "$ TRAC _ ENV " \ 
 # - r "$ REV " \ 
 # - u "$ AUTHOR " \ 
 # - m "$ LOG " \ 
 # - s "$ TRAC _ URL " 
 raise ImportError , ' Requires Python 2 . 3 or the Optik option parsing library . ' 
 If - e [ ] , then commands must be in the form of [ closes # 4 ] . 
 Must be two characters . """) 
 '/ ticket / ## is appended ) . If this is not specified , ' 
 ' the project URL from trac . ini will be used . ') 
 ' closed ': '_ cmdClose ', 
 ' closes ': '_ cmdClose ', 
 ' fix ': '_ cmdClose ', 
 ' fixed ': '_ cmdClose ', 
 ' fixes ': '_ cmdClose ', 
 ' addresses ': '_ cmdRefs ', 
 ' re ': '_ cmdRefs ', 
 ' refs ': '_ cmdRefs ', 
 ' ticket ': '_ cmdRefs ', 
 # Instead of bothering with the encoding , we ' ll use unicode data 
 # as provided by the Trac versioncontrol API ( # 1310 ) . 
 return # out of scope changesets are not cached 
 # determine sequence number . .. 
 if change [ ' permanent ']: 
 print " Note that the deprecated options will be removed in Trac 0 . 12 . " 
 이제 커 밋 을 해 보 자 . 제대로 설정 이 되 었 다면 svn 의 commit comment 에 는 Ticket # XXX 형식 의 링크 가 표시 되 어야 하 고 , ticket 에 는 변경 이력 부분 에 해당 revision 의 commit comment 및 revision 조회 링크 가 표시 되 어야 한다 . 제대로 되 지 않 았 다면 3 단계 의 post hooking script 의 log 를 살펴보 자 . 직접 trac - post - commit - hook . py 를 실행 해 보 는 것 도 좋 은 방법 이 다 . 
 태그 : trac , svn , 연동 , IT 
 밸리 : IT 2008 / 09 / 29 20 : 03 
 우 탱 위키 : 20090310 ~ 20090316 2009 - 03 - 14 09 : 30 : 22 # 
 . .. trac xmlrpc http : / / trac - hacks . org / wiki / XmlRpcPlugin java example 을 다운로드 SVN hook 사용 예제 http : / / kingori . egloos . com / 3922223 RCP or Plug - in ? http : / / www . ibm . com / developerworks / kr / library / os - eclipse - snippet / h . .. more 
 그런지 Ltd . : trac 2012 - 06 - 04 20 : 31 : 14 # 
 . .. http : / / jinself . tistory . com / tag / trac http : / / kingori . egloos . com / 3922223 . .. more 
 제우스 2008 / 09 / 30 11 : 16 # 
 Mylyn 과 eclipse , redmine 을 연결 하 였 는데 . . 
 아직 정식 지원 이 아니 라 단순 웹 연결 이 라서 메리트 가 좀 떨어지 네요 . 
 그냥 옆 에 브라우저 띄워 놓 는 거 랑 별반 차이 가 엄 써서 요 ㅠㅜ 
 그래도 svn post commit 를 이용 해서 디스 트 파일 목록 을 자동 생성 하 는 방법 의 
 아이디어 랑 비슷 하 게 revision 으로 파일 내용 을 가져오 는 방법 을 찾 아서 ^^ 
 2 개 중 에 한 개 는 건졌 어요 ^^ 
 오리 대 마왕 2008 / 09 / 30 12 : 52 # 
 mylyn 의 좋 은 기능 중 하나 가 해당 이슈 에 관련 된 자원 만 을 볼 수 있 도록 하 여 집 중도 를 높이 는 것 인데 ( context 관리 ) , xmlrpc 등 이 아닌 단순 웹 연결 에서 는 이게 안 되 지요 . 그런데 xmlrpc 연결 이 되 도 썩 그리 편하 다는 느낌 은 없 어요 . 파일 첨부 는 drag & drop 이 되 니 훨씬 편하 지만 . 
 post commit 는 상당히 유용 하 지요 . 위 에 스크립트 2 개 중 앞 의 녀석 은 굳이 trac 이 아니 더라도 다른 환경 에서 도 살짝 바꿔서 유용 하 게 사용 할 수 있 을 겁니다 ~ 
 아이리스 2008 / 10 / 16 17 : 32 # 
 elliott 2010 / 02 / 05 11 : 19 # 삭제 
 정말 좋 은 내용 감사 합니다 . 퍼가 겠 습니다 . 
 다음 글 : 웹 어플리케이션 에 SpringSecurity 2 . 0 . X 를 적용 하 기 
 이전 글 : JUnit 4 기반 의 테스트 케이스 와 Clover 를 함께 쓰 기 위한 ant 설정 
 socket 서블릿 emoji gdhk android 번역 카카오 접근성 jsp 안드로이드 programming rework hackathon 이직 sublimetext 2 intellij 후기 독후감 dfxkorea nio deview java google h 3 세미나 textview 구글 컨퍼런스 gdg 재미 이론