----------------------------------------------------------------------------------------------
출처: http://wiki.dev.daewoobrenic.co.kr/mediawiki/index.php/Mantis%26svn
----------------------------------------------------------------------------------------------
[환경 셋팅]
- 아래의 내용을 post-commit.bat 란 이름으로 작성한다.
REM #################################
REM Post-commit hook for MantisBT integration
REM #################################
SET REPOS=%1
SET REV=%2
SET DETAILS_FILE=E:\svnfile_%REV%
SET LOG_FILE=E:\svnfile_%REV%_Log
echo ****** Source code change ******>>%DETAILS_FILE%
svnlook log -r %REV% %REPOS%>>%DETAILS_FILE%
echo SVN Revision:%REV%>>%DETAILS_FILE%
svnlook diff -r %REV% %REPOS%>>%DETAILS_FILE%
C:\APM_Setup\Server\PHP5\php.exe
C:\APM_Setup\htdocs\mantis\core\checkin.php <%DETAILS_FILE% >%LOG_FILE%
DEL %DETAILS_FILE%
DEL %LOG_FILE%
|
E: : 임시파일이 저장될 폴더... 아무데나 정해 준다. C:\APM_Setup\Server\PHP5\php.exe : php 인터프리터의 위치 C:\APM_Setup\htdocs\mantis : mantis가 설치된 위치 |
작성한 후 SVN 저장소가 있는 곳에 보면 hooks 폴더가 있다. 이곳에 위에서 작성한 파일을 복사한다.
/[mantis]/config_inc.php 파일에 아래 내용을 추가
## SOURCE CONTROLL ##################################################
$g_source_control_account = 'administrator';
$g_source_control_notes_view_status = VS_PUBLIC;
$g_source_control_set_status_to = on;
$g_source_control_regexp = "/\bissue [#]{0,1}(\d+)\b/i";
$g_source_control_account = 이슈를 기록할 유저 (mantis에서 등록된 사용자여야 한다)
$g_source_control_notes_view_status = 공개 여부 : (VS_PUBLIC | VS_PRIVATE 중 하나)
$g_source_control_set_status_to = 상태변경 여부 (ON | OFF)
$g_source_control_regexp = 이슈를 감지할 정규표현
활용방법
mantis 버그 이슈를 등록하면 이슈번호가 생성된다.
Eclipse에서 소스를 commit 할 때 다음 그림과 같이 코멘트를 작성한다.
issue #0000002 오타 수정후 버그 완료
mantis에 접속한 후 해당 이슈를 보면 SVN 변경 기록과 함게 이슈 노트가 등록된 것을 알 수 있다.
bugtraq:label = issue
bugtraq:url = http://localhost/mantis/view.php?id=%BUGID%
bugtraq:message = issue %BUGID%
bugtraq:warnifnoissue = true
2. SVN 저장소의 hooks디렉토리에 다음에 나오는 배치 명령이 들어있는 post commit hook 파일 생성
(C:\Repository\hooks\post-commit.bat). SVN이 commit되는 동안에 Mantis에 이슈 노트로
추가될 내용들을 넣습니다.
REM Post-commit hook for MantisBT integration
SET REPOS=%1
SET REV=%2
SET DETAILS_FILE=C:\Repository\GNIS4M\svnfile_%REV%
SET LOG_FILE=C:\Repository\GNIS4M\svnfile_%REV%_Log
echo ****** Source code change ******>>%DETAILS_FILE%
svnlook info -r %REV% %REPOS%>>%DETAILS_FILE%
echo SVN Revision:%REV%>>%DETAILS_FILE%
svnlook diff -r %REV% %REPOS%>>%DETAILS_FILE%
C:\APM_Setup\Server\PHP4\php.exe C:\APM_Setup\htdocs\mantis\core\checkin.php
<%DETAILS_FILE% >%LOG_FILE%
DEL %DETAILS_FILE%
DEL %LOG_FILE%
3. 다음 내용을 Mantis config_inc.php에 추가합니다.
#Integration to SVN
$g_source_control_notes_view_status = VS_PRIVATE;
$g_source_control_account = 'Administrator';
$g_source_control_set_status_to = OFF;
$g_source_control_regexp = "/\bissue [#]{0,1}(\d+)\b/i";
추가로 연동할 SVN저장소에는 1,2만 반복하면 됩니다.
해보니까 연동은 잘되는데 한글이 깨지는 문제가 생깁니다.
Windows의 Command Prompt는 기본적으로 시스템의 locale을 따르는데..
그게 euc-kr 입니다...
문제는 연동 배치 파일에서 svnlook을 쓰는데 이 프로그램은 Command Prompt의 Locale에
맞춰서 문자열을 출력한다는거.. 우리의 Mantis는 UTF-8을 써서 한글을 표현하기 때문에...
euc-kr로 된 SVN 정보들은 다 깨집니다.
(물론 euc-kr로 할수도 있지만...그러면 Mantis가 자꾸 워닝을 뿌리기 때문에...)
해결책으로 Mantis의 Core디렉토리에 있는 checkin.php를 직접 수정합니다.
42번째 줄의
while ( ( $t_line = fgets( STDIN, 1024 ) ) ) {
...
를
while ( ( $t_line_euc = fgets( STDIN, 1024 ) ) ) {
$t_line = ( iconv("EUC-KR","UTF-8",$t_line_euc)?iconv("EUC-KR","UTF-8",$t_line_euc):$t_line_euc );
...
로 바꾸니까 해결되는군요.. 윈도우2003서버에서 Mantis 1.0.6과 svn 1.4.0으로 작업했습니다.
이번에 세팅할 것은 Mantis - Svn - Eclipse 3가지를 연동하는 것입니다. 보통 2가지를 연동하는데 3가지를 연동하는것이 다소 어려울 수 있다고 생각할지도 모르나 생각보다 어렵지 않습니다.
우선 위의 3가지를 연동하기 위해서는 우선 위의 3가지를 다 실행을 시켜야 합니다.
Mantis부터 실행시켜 보겠습니다.
Mantis는 이슈 트래킹 또는 버그 트래킹이라고 하는 프로그램입니다.
이게 PHP로 짜여있고 아파치에서 돌아가는 게시판 프로그램 정도로 보셔도 될 듯합니다.
Mantis라는게 사실은 그냥 PHP 프로그램 콘텍스트하나라고 보시면 이해가 빠르실 겁니다.
보통 PHP프로그램 콘텍스트는 아파치 서버에 넣으셔서 돌리면 되듯이 이것도 Mantis도 그냥 집어 넣어서 돌리시면 됩니다. 또 Mantis가 게시판이라고 말씀드렸듯이 게시판은 DB가 필요하겠죠.
여기서는 mysql을 쓸겁니다. 그래서 우리가 사용할 것은
-Mantis 컨텍스트
-아파치서버
-mysql
입니다. 아파치랑 mysql은 따로 설치하기 번거로우니 autoset이라는 것을 사용할 겁니다.
그래서 최종 준비물은
-Mantis 컨텍스트
-autoset
이 되겠습니다. 그럼 설치 시작입니다. 일단 autoset부터 설치합니다.
오토셋은 올가 4.3.1을 사용하였습니다.http://www.autoset.org/v2007/orga/download.php
여타 다른 윈도우 설치와 전혀 다르지 않습니다. 쭉~ 설치해줍니다.
그럼 설치를 했으니 한번 실행해봅니다.
짜잔~ 이게 실행화면입니다. 이제 우리가 필요한 설정들을 해보죠.
일단 우리가 할 일이 Mantis에서 사용할 DB를 만드는 것입니다.
그것을 위해 제일 처믕 할 일은 웹서버와 MySQL을 서비스에 등록 입니다.
파일 - NT 서비스 바로가기 - 웹서비스등록
파일 - NT 서비스 바로가기 - MySQL 서비스 등록
두 개 다 실행 시켜 줍니다.
그 다음
파일 - 웹서버 시작
파일 - MySQL 시작
두 개 다 실행을 합니다.
그럼 이런 화면이 뜹니다. 화면 상단의 오른쪽 상자에 웹서버(80), MySQL(3306)이 보이실 겁니다.
괄호안의 숫자가 포트를 의미합니다. 이제 본격적으로 DB를 만들러 가겠습니다.
" 파일 - phpMyAdmin 접속 " 을 선택합니다.
여기에 아이디와 암호를 써주셔야 합니다. 기본은 root / autoset 입니다.
다음에 나오는 화면에 '새 데이터베이스 만들기' 라는 메뉴가 있습니다.
텍스트 박스에는 우리가 정해줄 이름을 넣어주고 뒤의 콤보박스에는 (스크린 샷의 포커스되어있는 부분) utf8_general_ci 선택하고 '만들기' 버튼을 클릭합니다.
'데이터베이스를 만들었습니다' 라는 메시지가 나올겁니다.
일단 그러면 이제는 오토셋에서 설정한 부분은 다 끝났습니다. 이제 Mantis를 설치하러 갑니다.
Mantis는 버전 1.1.1을 사용하였습니다.
http://www.mantisbt.org/download.php 우선 다운받은 다음에 압축을 풉니다.
그럼 디렉토리 구조가 위의 그림처럼 되어있습니다. data 폴더는 mysql이 있고 server 폴더에는 아파치가있으나 이미 우리는 설치했으니 우리가 필요한건 root\mantis라는 폴더입니다.
우리는 mantis 폴더를 복사합니다.
autoset이 설치되어있는 폴더의 public_html 폴더의 안에다가 붙여넣습니다.
우리가 붙여넣은 mantis 안의 파일중 config_defaults_inc.php 파일을 에디트 프로그램으로 열어서
수정을 합니다.
$g_hostname = 'localhost';
$g_db_username = 'root';
$g_db_password = '';
$g_database_name = 'bugtracker';
이 부분을 우리가 설정한대로 고칩니다.
$g_hostname = 'localhost';
$g_db_username = 'root';
$g_db_password = 'autoset';
$g_database_name = 'mantis';
그리고 한글을 하고싶으신 분은
$g_default_language = 'english'; ☜ 'korean'으로
$g_fallback_language = 'english'; ☜ 'korean'으로
위의 두 줄의 english를 korean으로 고칩니다.
(저 두줄은 연달아 있는게 아닙니다. ctrl + f 로 찾아서 수정하세요)
이제 다음으로 mantis안의 파일 config_inc.php 이것을 수정해보겠습니다.
<?php
$g_hostname='localhost:3360';
$g_db_type='mysql';
$g_database_name='mantis';
$g_db_username='root';
$g_db_password=''; ?>
맨위의 $g_hostname='localhost:3360'; 가 MySQL의 포트입니다. 아까 autoset의 오른쪽 상단의 상자에 보셨으면 mysql의 포트가 3306이었습니다. 이것하고 맨밑의 password를 수정하겠습니다.
<?php
$g_hostname='localhost:3306';
$g_db_type='mysql';
$g_database_name='mantis';
$g_dbs_username='root';
$g_db_password='autoset'; ?>
이제 Mantis의 모든 설정을 했습니다. 이제 실행을 해 봐야겠죠?
http://localhost/mantis/admin/
이주소를 익스플로어 주소에 쓰고 실행합니다.
이 화면이 나오면 성공 한 겁니다
제일 위의 메뉴 Check Your Installation을 클릭합니다.
이렇게 오른쪽에 초록색으로 GOOD이 뜨면 성공한겁니다.
하나라도 빨강색으로 BAD라고 써있으면 안됩니다.
http://localhost/mantis/admin/install.php
그 다음 위의 주소로 갑니다.
밑의 두개의 빈 텍스트 박스에 root / autoset을 써주고 버튼을 클릭하면 데이터베이스 테이블이
만들어집니다.
역시 오른쪽에 전부 GOOD으로 뜨면 성공입니다.
이제 정말 모든 세팅은 끝났습니다. 이제 직접 Mantis를 실행하러 갑니다.
http://localhost/mantis/ 이 주소로 갑니다.
이제 아이디와 비밀번호를 쓰고 로그인하면 됩니다. 디폴트는 administrator / root 입니다.
이제 드디어 맨티스가 떴습니다.
맨티스를 실행했으니 이제 이슈를 한번 등록해 보겠습니다.
관리 - 프로젝트관리 - 새로운프로젝트 생성버튼을 클릭합니다.
각각의 정보를 대충 입력하고 프로젝트 추가 버튼을 누릅니다.
이제 새로운 프로젝트를 만들었으니 그 프로젝트에 대하여 이슈를 생성하겠습니다.
"이슈 보고하기"를 선택하고 이슈를 작성합니다.
이슈 보기를 하면 이슈가 나옵니다. 이슈를 선택하면
이슈에 관한 정보가 쫘르륵 나옵니다. 우리가 주목해야 할 건 맨 밑의 이슈노트, 이슈노트 추가 입니다.
이게 연동할때 직접적으로 쓰이는 기능이거든요. 어쨌든 이것으로 Mantis 실행은 마치겠습니다.
이제 계속해서 sub버전을 설치하고 eclipse랑 연동을 하겠습니다.
우선 sub버전을 설치합니다. 여기서는 svn 1.4.6 을 설치했습니다.
역시 여타 윈도우즈 프로그램 설치와는 크게 다르지 않습니다.
cmd 창에서 svn을 쳐서 위의 메시지가 나오면 설치와 path가 된겁니다. 이제 svn 사용자와 저장공간을
만들겠습니다. cmd 창에서 아래처럼 실행해줍니다.
svnadmin --fs-type fsfs create d:\svn\rep
저는 d:\svn\rep폴더를 저장장소로 정했습니다. 여기서 주의할 점은 바로 저렇게 치면 안되고 꼭 d"\의 svn폴더를 생성을 해줘야 합니다. 즉 저장장소를 정할때에는 저장장소(여기서는 rep 폴더)만 자동생성되고 그 상위 폴더는 우리가 직접 생성해 줘야 합니다.
우리가 만든 rep 폴더의 구조는 이렇습니다.
이제 sub버전의 설정을 해줘야 합니다. rep폴더의 conf폴더를 열어서 svnserve.conf 파일을 수정합니다.
# anon-access = read
# auth-access = write
# password-db = passwd
# realm = My First Repository
svnserve.conf 파일을 보면 위의 네줄이 있을겁니다. (절대로 연속적이지 않습니다. 떨어져있습니다.)
각 줄 앞의 #가 주석인데 이것을 모두 지워줍니다.
anon-access = read
auth-access = write
password-db = passwd
realm = My First Repository
다음으로 같은 폴더에 있는 passwd 파일을 수정합니다. 이 파일은 간단하게 아이디와 비밀번호를
설정하는 겁니다. 열어보시면 [user]에 주석처리 되어있는 샘플이 있을텐데 우리는 제일 밑에 우리 계정을 만들겠습니다. 저는 okok = okok 이렇게 만들었습니다. (아이디 :okok 비밀번호 : okok)
sub버전도 설정을 다했으니 한번 서버를 실행해보겠습니다.
cmd창에서
svnserve -d -r d:\svn
이렇게 해서 서버를 실행합니다. 우리가 만든게 rep라고 해서 svnserve -d -r d:\svn\rep 라고
실행하시면 접근이 안됩니다. 무조건 상위폴더를 설정해주시기 바랍니다. 자, 이제 접근을 하면 되는데
우리는 eclipse로 연동하기로 했으니 eclipse의 플러그인을 설치해서 접근하겠습니다.
플러그인 설치과정은 바로 바로 스크린샷으로만 보여드리겠습니다.
New Rmote Site를 클릭합니다.
URL에 http://subclipse.tigris.org/update_1.2.x
설치에서 Optional부분은 체크를 해제해줍니다.
그리고 finish를 클릭하고 설치를 시작합니다 중간에 선택문이 하나 나오는데 install을 선택하고
eclipse 재시작 할거냐고 물어보는데 재시작을 합니다. 재시작하면 지금 설치한 svn이 있는 지를
확인합니다.
그럼 한번 연결해봅니다.
finish를 누르면
이렇게 추가가 됩니다. 이제 프로젝트에서 파일을 만들어 서버에 올려 보겠습니다.
저는 테스트 프로젝트에 Hello라는 클래스를 만들었습니다. 이것을 이제 우리가 만든 rep에 올리겠습니다.
finish....
우리가 전에 입력한 okok / okok 를 입력합니다.
Initial Import 에는 우리가 적는 코멘트를 적어줍니다. 그리고 ok를 누르시면 다 올라간겁니다.
이제 그것을 한번 확인해보겠습니다.
이렇게 왼쪽에 Test 프로젝트랑 Hello라는 java 파일이 보이면 성공입니다.
이렇게 되면 이제 eclipse에서 고치고 commit를 하면 자동으로 바뀌게 됩니다. 연동이 된거죠.
이제 이걸 우리는 Mantis에다가 연동만 하면 연동이 되겠네요. 그럼 마지막으로 연동해 보겠습니다.
일단 bat 파일을 하나 만들어야 합니다.
post-commit.bat 라는 이름으로 하나 만들어야 합니다.
REM #################################
REM Post-commit hook for MantisBT integration
REM #################################
SET REPOS=%1
SET REV=%2
SET DETAILS_FILE=D:\svn\log\svnfile_%REV%
SET LOG_FILE=D:\svn\log\svnfile_%REV%_Log
echo ****** Source code change ******>>%DETAILS_FILE%
svnlook log -r %REV% %REPOS%>>%DETAILS_FILE%
echo SVN Revision:%REV%>>%DETAILS_FILE%
svnlook diff -r %REV% %REPOS%>>%DETAILS_FILE%
C:\projutil\AutoSet\Server\php5\php.exe C:\projutil\AutoSet\public_html\mantis\core\checkin.php <%DETAILS_FILE% >%LOG_FILE%
파랑은 autoset의 php실행파일이 있는 경로이고, 빨강색은 우리가 autoset에 복사한 맨티스 경로입니다.
그리고
SET DETAILS_FILE=D:\svn\log\svnfile_%REV%
SET LOG_FILE=D:\svn\log\svnfile_%REV%_Log
이 부분은 우리가 로그파일을 저장할 곳으로 설정을 해주면 됩니다.
주의해야 할 것은 꼭 이미 폴더가 만들어져야 있어야 합니다.
만들어져있지 않으면 로그 파일을 생성이 되지 않습니다.
이제 bat파일은 다 만든겁니다.
이제 이 파일을 저장소(rep폴더)의 hooks폴더에 복사하여 붙여 넣습니다.
자 이제 마지막으로 아까 mantis를 할 때 한번 수정한 적이 있는 파일을 수정해보겠습니다.
Mantis의 config_inc.php 파일을 엽니다.
$g_source_control_account = 'administrator';
$g_source_control_notes_view_status = VS_PUBLIC;
$g_source_control_set_status_to = on;
$g_source_control_regexp = "/\bissue [#]{0,1}(\d+)\b/i";
맨밑의 부분에 추가를 위의 내용을 추가 시켜줍니다.
각각의 사항은
$g_source_control_account = 이슈를 기록할 유저 (mantis에서 등록된 사용자여야 한다)
$g_source_control_notes_view_status = 공개 여부 : (VS_PUBLIC | VS_PRIVATE 중 하나)
$g_source_control_set_status_to = 상태변경 여부 (ON | OFF)
$g_source_control_regexp = 이슈를 감지할 정규표현
입니다.
그래서 최종 파일 내용은
<?php
$g_hostname='localhost:3306';
$g_db_type='mysql';
$g_database_name='mantis';
$g_dbs_username='root';
$g_db_password='autoset';
$g_source_control_account = 'administrator';
$g_source_control_notes_view_status = VS_PUBLIC;
$g_source_control_set_status_to = on;
$g_source_control_regexp = "/\bissue [#]{0,1}(\d+)\b/i";
?>
이렇게 하면 됩니다.
이제 모든 설정은 다 했고 우리가 이슈에 대한 커맨트를 작성할때 한글을 쓰면 아마 달리지 않을 겁니다.
그래서 그 한글 처리 부분마저 수정을 해보겠습니다.
mantis 폴더안의 core 폴더 안의 checkin.php 파일을 수정해야 합니다.
while ( ( $t_line = fgets( STDIN, 1024 ) ) ) {
이 부분을
while ( ( $t_line_euc = fgets( STDIN, 1024 ) ) ) {
$t_line = ( iconv("EUC-KR","UTF-8",$t_line_euc)?iconv("EUC-KR","UTF-8",$t_line_euc):$t_line_euc );
이렇게 고쳐 주시면 됩니다. 이제 설정은 끝났으니 테스틀 해보겠습니다.
맨티스를 실행 시킵니다.
http://localhost/mantis/
로그인을 한후 아까 우리가 하나 등록한 이슈를 클릭하여 정보를 봅시다.
이렇게 나오면 우리가 주의 깊게 봐야할 것은 이슈 번호와 이슈 노트(댓글) 입니다.
이슈 번호는 00000001 이고 이슈노트는 아무것도 없네요.
이제 eclipse를 사용하여 우리가 아까 svn 저장소에 올린 Test 프로젝트의 Hello 파일을 수정하여
다시 올립니다.
이렇게 한후 아까 본 코멘트 다는 화면이 나옵니다. 여기서 주의해야 할 것이 이번에는 코멘트에 우리가
좀 전에 수정한 config_inc.php 파일에 맨 마지막 줄에 정규표현식에 맞춰서 작성을 해줘야 합니다.
issue #0000001 오타 수정후 버그 완료
이런 식이면 될것 같습니다. 앞의 #00000001은 이슈번호 입니다.
다 하신후 다시 아까 띠운 Mantis화면을 봅니다. 거기서 F5를 눌러서 새로 고침을 해봅니다.
이슈 노트에 하나가 추가된 것을 볼 수 있을 겁니다.
우리는 맨티스에서는 한 것 없이 이클립스에서 코드를 고쳤는데 변경이 가능하게 된겁니다.
보통 mantis와 svn 클라이언트와의 연동을 위해서 mantis 설치 디렉토리의 하위 디렉토리인 core에 있는 checkin.php를 사용합니다. 그러나 DS-209+II에서는 checkin.php를 이용하기가 쉽지 않습니다.
checkin.php 소스 코드의 첫 줄이 다음과 같이 시작됩니다.
#!/usr/local/bin/php -q
즉, CLI(Command Line Interface) 모드에서 동작되도록 되어 있는 것이죠..
DS-209+II에는 php 실행 파일이 존재하지 않고, mysql 관련 라이브러리가 없기 때문에 checkin.php를
이용하려면 직접 컴파일 해서 해당 파일들을 구해야 됩니다.
일반 리눅스 서버가 아니라서 쉽지 않은 일이죠..
그래서 다른 방법을 찾아보았습니다. checkincurl.php이라는 걸 이용하는 것입니다.
이것을 이용하기 위해서는 curl이 필요합니다. curl을 이용한 방법의 장점으로는 svn서버와 웹서버가
물리적으로 같은 서버에 있지 않을 경우에도 커밋 로그를 mantis로 전송할 수 있다는 것입니다.
아래 명령을 이용하여 curl을 먼저 설치합니다. (당연히 아래 명령을 이용하기 위해서는 bootstrap이
설치 되어 있어야 겠죠. http://isulnara.com/tt/201 참조)
[root@fs:~]# ipkg install libcurl
이제 svn 클라이언트에서 커밋할 경우 svn 서버에서 mantis로 checkincurl.php로 커밋 로그를 넘겨주도록 설정해야 됩니다. svn 서버의 저장소에 hooks라는 디렉토리가 존재합니다.
이 디렉토리 내의 post-commit.tmpl를 post-commit으로 복사하고, 실행 권한을 줍니다.
[root@fs:~]# chmod 705 post-commit
그리고, 그 내용은 다음과 같이 설정합니다.
REPOS="$1"
REV="$2"
auth=$(/opt/bin/svnlook author -r $REV $REPOS)
dt=$(/opt/bin/svnlook date -r $REV $REPOS)
changed=$(/opt/bin/svnlook changed -r $REV $REPOS)
log=$(/opt/bin/svnlook log -r $REV $REPOS)
n='<br>'
/opt/bin/curl -d "user=$auth&log=Changeset [${REV}] $n$log$n$changed" http://서버주소/mantis경로/core/checkincurl.php
- 위 내용에서 서버주소와 mantis가 설치된 경로를 설정합니다.
이제 mantis 설정이 남았습니다.
mantis 설정은 기본 설정 파일 수정과 한글 지원을 위한 처리, core 디렉토리에 접근을 위한 설정
이렇게 세 가지가 필요합니다.
먼저 mantis 설치 디렉토리의 config_inc.php를 아래와 수정합니다.
# svn
$g_source_control_server = array('192.168.0.4');
$g_source_control_account = 'isul';
$g_source_control_regexp = '/\b(?:bug|issue)\s*[#]{0,1}(\d+)\b/i';
$g_source_control_notes_view_status = VS_PRIVATE;
$g_source_control_set_status_to = RESOLVED;
$g_source_control_set_resolution_to = FIXED;
$g_source_control_fixed_regexp = '/\bfix(?:ed|es)\s+(?:bug|issue)?\s*[#]{0,1}(\d+)\b/i';
- 위 내용에서 $g_source_control_server는 접속을 허용할 svn 서버의 ip 주소를 설정합니다.
- $g_source_control_account는 mantis에 있는 사용자 계정을 입력합니다.
- $g_source_control_regexp로 설정된 bug, issue는 커밋 로그 입력 시 "bug #이슈번호" 또는 "issue #이슈번호"라는 단어가 있을 경우에만 mantis의 이슈 노트로 등록되게 한다는 의미입니다.
- $g_source_control_set_status_to는 이슈 노트의 공개/비공개 설정으로 VS_PRIVATE는 비공개, VS_PUBLIC는 공개를 의미함
- $g_source_control_set_status_to는 이슈 상태를 의미(RESOLVED, CLOSED 등)
- $g_source_control_set_resolution_to는 이슈 노트의 해결 상태를 의미
다음은 한글 처리를 위한 부분으로 DS-209+II와 같이 LANG 환경변수를 사용할 수 없는 시스템에서만
필요합니다. DS-209+II의 경우 post-commit에 "export LANG=ko_KR.UTF-8"을 설정해봐야 인식되지
않습니다. 이 문제를 해결하기 위해 mantis 설치 경로의 core 디렉토리에 checkincurl.php를 아래와 같이 수정합니다. 이 부분 설정하지 않으면 한글이 아래와 같이 표시됩니다.
?\\236?\\158?\\152
붉은 색으로 된 부분을 추가하면 됩니다.( 붉은 색 이전의 문자를 검색하여 해당 위치를 찾으면 됩니다.)
# --------------------------------------------------------
# $Id: checkin.php,v 1.5.2.1 2007-10-13 22:35:16 giallu Exp $
# --------------------------------------------------------
global $g_bypass_headers;
$g_bypass_headers = 1;
require_once( dirname( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR . 'core.php' );
//--------------------------------------------------------------------------------------
// 한국어 변환
// by isul ( http://isulnara.com )
//--------------------------------------------------------------------------------------
function convertToKorean($str)
{
$DELIMITER = "?\\\\";
$pos = strpos($str, $DELIMITER);
while ($pos !== false)
{
$pos = strpos($str, $DELIMITER);
$dec = substr($str, $pos + 3, 3);
if ($pos !== false)
$str = str_replace($DELIMITER . $dec, '%' . dechex($dec), $str);
}
return urldecode($str);
}
//--------------------------------------------------------------------------------------
... 중략 ....
$t_line = isset($_POST['log']) ? $_POST['log'] : '';
$t_line = convertToKorean($t_line);
#var_dump("$t_line");
마지막으로 curl이 core 디렉토리의 checkincurl.php에 접근할 수 있도록 core 디렉토리에 있는
.htaccess의 파일명을 변경하거나 삭제합니다.
이제 모든 설정이 완료되었습니다. TortoiseSVN, 이클립스 등의 SVN 클라이언트에서 커밋 로그를 입력할 때 issue #10 또는 bug #10과 같은 내용만 포함되면 svn 서버에서 자동으로 mantis로 그 내용을 전송하여 이슈 노트로 등록합니다.
커밋 로그 입력 시 매번 issue #10와 같은 것을 입력하기 싫다면 속성 설정으로 자동 입력되게 할 수도
있습니다. TortoiseSVN의 경우는 http://newbie.kr/52를 참고하시면 자동 입력되게 할 수 있습니다.
몇 시간에 걸쳐 고생해서 연동을 하긴 했는데 얼마나 사용할지는 모르겠습니다.
svn 클라이언트에서 커밋 시 mantis에 기록된 이슈 번호를 알아야 하기 때문이죠..
그냥 커밋 후 mantis에 다시 한 번 기록하는 것는 더 편할 수도...
참고
http://www.mantisbt.org/bugs/view.php?id=8847
http://newbie.kr/52
SVN에서 제공하는 hook 스크립트 중에서 post-commit 훅 스크립트를 수정한다.
(없으면 생성해야됨..)
SVN 저장소 디렉토리에 보면 hooks란 디렉토리가 있는데
해당 디렉토리에 각 훅 스크립트의 템플릿이 있다.
post-commit.tmpl 파일을 복사하여 복사본의 이름을 post-commit 으로 바꾸자.
post-commit 파일을 다음과 같이 수정한다.
export LANG=ko_KR.UTF-8
REPOS="$1"
REV="$2"
auth=$(svnlook author -r $REV $REPOS)
dt=$(svnlook date -r $REV $REPOS)
changed=$(svnlook changed -r $REV $REPOS)
log=$(svnlook log -r $REV $REPOS)
n=$'\n'
php -q ~/mantis설치폴더/core/checkin.php <<< "Changeset [${REV}] by $auth, $dt$n$log$n$changed"
그리고 post-commit 파일의 속성을 실행가능하게 변경한다.
SSH로 접속해서 svn저장소/hooks 디렉토리로 이동한 후 다음 명령을 실행한다.
이제 svn 커밋이 있을 때마다 로그에 이슈 번호만 제대로 적어준다면 자동으로 mantis 이슈 노트가
등록될 것이다. 하지만 매번 로그에 issue # ~~ 라고 적기도 귀찮다..
svn에서 제공하는 bugtraq 속성을 이용하면 이것도 쉽게 할 수 있다.
TortoiseSVN을 사용한다고 치고, 체크아웃 받은 디렉토리에서
마우스 우클릭 - TotoiseSVN - Properties 를 선택한다.
다음 그림과 같이 속성들을 추가한다.
속성을 추가할 때 Apply property recursively에 체크하는 것을 잊지말자.
이제 커밋을 하려고 하면 커밋윈도우 모양이 바뀐것을 볼 수 있을 것이다.
이슈 번호를 입력할 수 있는 컨트롤이 추가되었다. 만약 이슈 번호를 입력하지 않고 커밋하려고 하면
경고 창이 뜬다. 커밋을 하면 mantis에 자동으로 이슈노트가 등록된다.
svn 로그에서도 바로 mantis로 이동할 수도 있다.
이슈 번호를 클릭하면 mantis 페이지로 넘어감.. 이상으로 svn과 mantis 연동에 관한 글을 마친다.
'IT_Programming > Dev Tools' 카테고리의 다른 글
이클립스 Auto-Refresh 기능 활성화 (0) | 2011.03.30 |
---|---|
이클립스 Tasks 사용하기 (0) | 2011.03.28 |
Visual SVN / AnknSvn 사용법 및 Tips (Trac / CommitMonitor / VS 연동) (0) | 2011.03.27 |
ANT 를 이용한 RMI 컴파일 ( rmic 로 stub 생성하기 ) (0) | 2011.03.18 |
[펌] RMI Plug-in for Eclipse를 이용한 RMI Test 환경 만들기 (0) | 2011.03.18 |