그동안 분산형 버전관리시스템인 git를 테스트중이었으나 서버를 svn에서 git로 바꾸기에는 다소 무리가 있었다. 
그래서 로컬에서는 git를 사용하고 git-svn을 통해 svn서버와 연동하는 방식을 사용했다.
하지만 이 방식은 상당히 불편해 서버상에서 자동으로 sync가 되는 subgit에 대해서 테스트하고 있는 중이다.
subgit를 설치하고 대부분 동작이 잘 되었는데 로컬레파지토리에 커밋을 하나 한 다음 svn상에 또다른 커밋이 생겼을 경우 git push는 에러가 난다.
이때 git pull을 하게 되면 merge 방식으로 작동되면서 로컬에 merge커밋을 하게 되는데 이걸 커밋하면 svn서버에 shelves 라는 브랜치로 임시저장이 되는 것 같다.
  (이에 대해서 개발담당자한테 트윗을 날려봤는데 현재까지 관련된 문서는 없고 subgit 1.0이 릴리즈될 때 문서를 공개한다고 한다. http://t.co/l6rFEAhP)
이방식이 어떻게 작동되는지 잘 몰라 난감했는데 git로 pull을 할때 다음과 같이 rebase옵션을 주고 pull한 다음 push하면 정상적으로 svn서버와 sync가 되는 것을 확인했다.

git pull --rebase 원격저장소명

  






맨티스가 1.2 버전대로 업그레이드 되면서 플러그인을 지원하기 시작했다. 그중에서 Source Integragtion plugin은 git나 subversion과 연동하여 레파지토리를 브라우즈하고 note에 changeset을 자동추가하는 기능을 가지고 있다.
이곳 에 나와있는 데로 설정하니 모든 기능이 작동했는데 svn커밋시 한글로 메세지를 작성하게 되면 메세지가 아예 노트에서 빠져버렸다. 검색을 해봐도 오래전버전에 해당하는 내용만 나오고 plugin방식은 답변이 없어서 결국 플러그인 제작자의 버그트랙에 질문을 올려서 해결방법을 찾아냈다.


해결방법은 간단한데 plugins\SourceSVN\SourceSVN.php의 process_svn_log함수에 다음 내용을 추가하면된다.

        foreach( $p_svnlog as $t_line ) {
            $t_line = iconv('EUC-KR', 'UTF-8', $t_line);       --> 이 라인 추가!!
            # starting state, do nothing

다음과 같이 정상적으로 메세지가 표시되고 diff 및 file도 잘 작동한다.
자세한 플러그인 설치방법은 http://www.unitz.com/u-notez/2009/10/subversion-svn-integration-mantisbt/ 를 참고하면 된다.




Mantis는 Trac과 더불어 가장 많이 쓰이는 공개이슈트래킹시스템이다. 필자는 Trac, Mantis 둘다 사용해 봤는데 두개다 장단점이 있는 것 같다. 여력이 된다면 Attlasian Jira가 가장 좋은 선택이겠지만 공개툴 중에 고른다면 위의 두개나 ruby로 되어 있는 redmine을 써도 괜찮을 것이다. Mantis는 다국어처리가 거의 완벽하게 되어있고 통계도 비교적 괜찮게 나온다. Trac은 여러가지 플러그인을 깔아줘야 쓸만해지는 것 같다.
다음은 Mantis에서 기본 smtp를 지메일로 설정하여 이슈에 대한 변동사항을 이메일로 받아보는 방법이다.

1. config_inc.php파일에 다음 내용을 추가한다.

   $g_phpMailer_method      = 2;
   $g_smtp_host         = 'smtp.gmail.com';
   $g_smtp_port          = 587;
   $g_smtp_username       = aaa@aaa.bbb.ccc';
   $g_smtp_password       = 'password';
   $g_smtp_connection_mode      = 'tls';

  1. $g_phpMailer_method 를 2로 설정하게 되면 이메일발송방법 중 SMTP를 사용하게 된다.
  2. $g_smtp_host 에는 위와같이 지메일의 smtp 주소를 설정한다.
  3. $g_smtp_port 에는 위와같이 587번 포트를 지정한다.
  4. $g_smtp_username 에는 지메일 유저아이디를 @뒤 까지 적어주면 된다.
  5. $g_smtp_connection_mode 에는 tls로 설정해 준다.

2. 위와같이 설정했는데도 불구하고 메일전송할때 시간이 오래걸린다면 메일 발송 테이블에 데이터가 쌓여있을수도 있으니 mysql의 mantis_email_table 의 데이터를 지워주면 빠르게 동작할 것이다.

 



Trac설치 마지막 포스트로 레드헷계열의 리눅스에서 소스를 컴파일하여 trac및 subversion을 설치하는 방법을 올린다.
다른환경에서의 설치는 아래링크를 참조하면 된다.

데비안계열에서 apt-get으로 trac,subversion설치하기
윈도우환경에서 TOW로 trac설치하기
visualsvn과 mysql을 이용한 trac설치방법

1. expat 라이브러리설치
shell>wget http://sourceforge.net/projects/expat/files/expat/2.0.1/expat-2.0.1.tar.gz/download
shell>tar xvfz expat-2.0.1.tar.gz
shell>cd expat-2.0.1
shell>./configure --prefix=/usr/local/expat && make && make install

2. python설치
shell>wget http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tar.bz2
shell>tar xvfj Python-2.6.4.tar.bz2
shell>cd Python-2.6.4
shell>./configure && make && make install
shell>cd /usr/bin
shell>rm python
shell>ln -s /usr/local/bin/python2.6 python

3. apache설치
shell>wget http://mirror.khlug.org/apache/httpd/httpd-2.2.14.tar.bz2
shell>tar xvfj httpd-2.2.14.tar.bz2
shell>cd httpd-2.2.14
shell>./configure --enable-dav --enable-so --enable-maintainer-mode --prefix=/usr/local/apache --with-expat=/usr/local/expat && make && make install

4. mod_python설치
shell>wget http://apache.tt.co.kr/httpd/modpython/mod_python-3.3.1.tgz
shell>tar xvfz mod_python-3.3.1.tgz
shell>cd mod_python-3.3.1
shell>./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/bin/python2.6 && make && make install
 위와 같이 했을 때 다음과 같이 src/connobject.c 142라인에서 에러가 나는것을 확인할 수 있다.
connobject.c: In function `_conn_read':
connobject.c:142: error: request for member `next' in something not a structure or union
apxs:Error: Command failed with rc=65536
.
make[1]: *** [mod_python.so] 오류 1
make[1]: Leaving directory `/root/install/mod_python-3.3.1/src'
make: *** [do_dso] 오류 2
이때는 직접 src/connobject.c 를 vi에디터로 열어서 뒤에 있는 b를 bb로 바꾸면 된다.
shell>vi ./src/connobject.c
142 라인의 !(b == APR_BRIGADE_SENTINEL(b) ||  에서 뒤에 b를 다음과 같이 bb로 고친후 저장한다.
!(b == APR_BRIGADE_SENTINEL(bb) ||
shell>./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/bin/python2.6 && make && make install

5. setupTools설치
shell>wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e
shell>tar xvfz setuptools-0.6c11.tar.gz
shell>cd setuptools-0.6c11
shell>python ./setup.py install

6. sqlite 설치
shell>wget http://www.sqlite.org/sqlite-amalgamation-3.6.20.tar.gz
shell>tar xvfz sqlite-amalgamation-3.6.20.tar.gz
shell>cd sqlite-3.6.20/
shell>./configure --prefix=/usr/local/sqlite3 && make && make install

7. subversion설치
shell>wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.bz2
shell>tar xvfj subversion-1.6.6.tar.bz2
shell>cd subversion-1.6.6
shell>./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/root/install/httpd-2.2.14/srclib/apr --with-apr-util=/root/install/httpd-2.2.14/srclib/apr-util --with-sqlite=/usr/local/sqlite3 && make && make install

위에서 /root/install/httpd-2.2.14 는 아파치소스압축을 푼 디렉토리를 입력해 주면 된다.
shell>make swig-py
shell>make install-swig-py
shell>echo /usr/local/lib/svn-python > /usr/local/lib/python2.6/site-packages/subversion.pth

8. subversion 레파지토리 생성
shell>cd /home
shell>mkdir trac
shell>cd trac
shell>mkdir repos
shell>cd repos
shell>svnadmin create Project1

9. svn접속 계정 생성
shell>cd /home/trac/repos
shell>/usr/local/apache/bin/htpasswd -c passwd username1

10. 아파치 svn설정
shell>vi /usr/local/apache/conf/httpd.conf

마지막 부분에 다음 내용 추가
<Location /svn/Project1>
  DAV svn
  SVNPath /home/trac/repos/Project1
  AuthType Basic
  AuthName "Project1's Repository"
  AuthUserFile /home/trac/repos/passwd
  Require valid-user
</Location>

11. pysqlite설치
shell>wget http://pysqlite.googlecode.com/files/pysqlite-2.5.5.tar.gz
shell>tar xvfz pysqlite-2.5.5.tar.gz
shell>cd pysqlite-2.5.5
shell>python ./setup.py install

12. Genshi설치
shell>easy_install Genshi

13. Trac설치
shell>easy_install Trac

14. Trac레파지토리 생성
shell>cd /home/trac/
shell>mkdir projects
shell>cd projects
shell>trac-admin ./Project1 initenv

Project Name  : 프로젝트 명 입력
Database connection string : sqlite선택(그냥엔터입력)
Repository type : svn(그냥엔터입력)
Path to repository : 아까 생성한 레파지토리주소입력(/home/trac/repos/Project1)

마지막에 Congratulations! 이라고 뜨면 정성적으로 레파지토리가 생성된 것임

15. 아파치 Trac설정
shell>vi /usr/local/apache/conf/httpd.conf

아래 항목 추가
LoadModule python_module      modules/mod_python.so
<Location /trac>
        SetHandler mod_python
        PythonInterpreter main_interpreter
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnvParentDir /home/trac/projects
        PythonOption TracUriRoot /trac
        PythonOption PYTHON_EGG_CACHE /tmp
</Location> 
<LocationMatch "/trac/[^/]+/login">
        AuthType Basic
        AuthName "Type your ID, Password"
        AuthUserFile /home/trac/repos/passwd
        Require valid-user
</LocationMatch>

16. trac디렉토리 권한 설정
기본적으로 아파치 웹서버가 daemon.daemon으로 뜨기 때문에 다음과 같이 바꿔준다.
shell>cd /home
shell>chown -R daemon.daemon trac

17. 아파치 데몬 실행
shell>/usr/local/apache/bin/apachectl start

18. python원본파일 복원
shell>cd /usr/bin
shell>mv python python2.6
shell>ln -s ./python2.3 python


19. 브라우져 확인
http://localhost/svn/Project1
http://localhost/trac/Project1

위의 주소에서 페이지가 정상적으로 뜬다면 설치가 완료된 것임




2009-11-4 BookMark

기타 2009.11.04 13:50

spring을 이용하여 pojo로 JMS사용하기(ActiveMQ)
http://whiteship.tistory.com/1303

spring jms 레퍼런스
http://static.springsource.org/spring/docs/2.5.x/reference/remoting.html#remoting-jms

벤더로부터 독립된 JMS구축하기
http://www.ibm.com/developerworks/kr/library/j-jmsvendor/


서울디자인올림픽2009가 10/9일부터 10/29일까지 열리는것 같다.
디자인에 대해서는 잘 모르지만 한번쯤 방문하고 싶은 행사다.



MS가 10/22 일 런칭파티를 하면서 파워블로거 777명한테 windows7 을 공짜로 준다고 하는것 같다.
아마도 비스타의 실패에서 벗어나려고 많은 준비를 하는 듯 하고 개인적으로는 windows7을 베타버전부터 써오고 있는데 비스타보다는 훨씬 성공할 것 같다. 예전 윈도98쓰다 2000쓰는 느낌이랄까?
관심있는 블로거분들은 얼릉 신청하시길.

이벤트등록바로가기





그바보 엔딩

기타 2009.06.21 16:50

드라마를 가끔 보는 편인데 처음에 이드라마를 보고 왠 유치한 판타지? 라고 생각했었다.
근데 이게 묘하게 사람을 끌어들이는 면이 있다.
하지만 아쉽게도 지난주 목요일 16화로 종영되었는데 마지막 멘트는 뭥미?? -.-
아마도 편집시 짤린듯 한데 검색을 해보니 원래 대본은
 "그저 바라보기만 했던 행복을 난 이젠 손을 뻗어 잡을 것이다. " 였다. 아마도 대본대로 촬영은 됐을 듯한데 편집에서 짤리다니 ㅜ.ㅜ

황정민님이 등장하는 작품은 이게 처음인데 나머지 영화도 감상해 봐야겠다.
아중씨 연기도 정민본좌 못지않지만 정민본좌는 정말 소름이 오르는 ㄷㄷㄷ.


P.S 원래 작가의 엔딩은 이거말고 지수의 방에서 알까기를 하면서 피날레를 장식하는 버전이 더 있었다.  결국 채택되지는 못했지만.
     
아래는 엔딩 플짤