출처 : http://blog.outsider.ne.kr/285

Trac 은 오픈소스 프로젝트로 사이트 설명에 나온대로 Integrated SCM & Project Management이다. 여기서 SCM은 Source Code Management의 약자로 소스코드 관리를 말한다. 보통은 형상관리라고도 많이 얘기하는데 CVS , SVN , git 등의 툴들이 있다. Trac은 이 SCM과 통합하고 프로젝트를 관리하는 툴로 최근에 오픈소스등에서 많이 사용하고 있다. 여기서는 Trac의 사용법 보다는 설치법에 대해서 정리하려고 한다. 그렇게 쓰고 싶었던 Trac이었는데 최근 프로젝트에 겨우 적용해 보고는 완전 푹~ 빠져있는 상태이다...

Trac설치가 워낙 복잡해서 이렇게 정리를 해 놓는다. 이 내용은 이재홍님 이 지으신  윈도우 프로젝트 필수 유틸리티에서 배운 내용을 바탕으로 정리한 것이기 때문에 자세한 내용을 알고 싶으면 위 책을 보길 바란다.



Trac은 웹어플리케이션이기 때문에 자신의 PC에 프로그램을 설치하는 것이 아닌 개발서버등에 설치에 놓고 Trac의 각 프로젝트 웹페이지에 접속해서 사용하는 형식으로 동작되기 때문에 웹서버인 Apache가 필요하다.

Apache 설치
Apache는 Apache사이트 에서 다운로드가 가능하다. 현재 버전은 2.2.11이다.

사용자 삽입 이미지

설치는 어렵지는 않고 그냥 Next만 눌러주면 되는데 Network Domain은 웹서버 도메인이 있으면 입력하고 아니면 그냥 넘어가도 괜찮다. IP로 접속하면 되기 때문에....  아파치는 웹서버이기 때문에 기본적으로 80포트를 선택한다. 80포트를 쓰지 않으려면 아래쪽에서 다른 포트를 선택해 주면 된다. 윈도우즈 서버라서 IIS가 동작중이라면 80포트를 동시에 쓸수 없기 때문에 다른 포트를 선택하거나 80포트를 같이 쓸 수 있는 프로그램을 설치해 주어야 한다.

사용자 삽입 이미지

설치가 완료되면 tray에 아파치서버에 대한 아이콘이 나타나고 Apache Service Monitor을 이용해서 아파치 서버를 다룰수 있다. IIS와 Apache가 같이 80포트를 사용하려면 Windows Server 2003 Service Pack 1 32-bit Support Tools 를 설치하여야 한다. 2003용이지만 XP에서도 사용이 가능하다. 설치 후 [시작프로그램] - [Windows Support Tools] - [Command Prompt]를 실행시켜서 다음과 같이 실행시켜 주면 된다.

httpcfg.exe set iplisten -i 현재아이피

사용자 삽입 이미지

실행시켜준 뒤에 리부팅을 해주면 IIS와 Apache가 동시에 80포트를 사용할 수 있다.




Trac 설치
이제 Trac 설치를 보자. Trac설치는 꽤 복잡하다. 그냥 설치한반에 끝나면 참 좋겠지만 안타깝게도 여러가지 설정을 해주어야 한다.

  • 일단 Trac은 Python으로 짜여져 있기 때문에 Python을 설치해 주어야 한다. Python사이트 에서 다운로드가 가능하다. 여기서는 Python 2.5.4를 사용하였다.(뒤이어 설치할 프로그램들의 대부분이 2.5를 사용하기 때문에 2.5를 깔지 않으면 에러가 난다.) 설치는 기본대로 설치를 해주면 된다.

  • SNV Python Bindings은 Trac에서 Subversion 레파지토리의 내용을 읽어오기 위한 프로그램이다. 여기서는 svn-python-1.5.5.win32-py2.5.exe 을 사용한다. 파이썬 2.5가 설치되어 있지 않으면 설치도중 에러가 나타난다. SNV Python Bindings은 아파치 2.2용과 2.0용이 있는데 여기서는 Apache 2.2를 설치했기 때문에 2.2용으로 사용한다. 아파치가 2.0이라면 2.0용을 설치해야 한다.

  • Genshi 는 Trac이 사용하는 웹용 아웃풋을 만들어 내는 역할을 한다. Genshi-0.5.1.win32-py2.5 을 다운로드해서 설치해주면 된다.

  • setuptools 를 설치해 준다. setuptools은 Trac을 설치하고 플러그인을 설치하는데 필요한 툴이다. setuptools사이트의 최하단에 보면 다운로드를 받을 수 있다. setuptools-0.6c9.win32-py2.5.exe를 사용한다.

  • Mod_python 은 Apache가 파이썬 코드를 실행하기 위해서 필요하다. 여기서는 mod_python-3.3.1.win32-py2.5-Apache2.2.exe을 사용하였고 설치중간에 폴더경로를 묻는데 Apache가 설치된 경로를 지정해 주면 된다. 일반적으로 설치했다면 C:\Program Files\Apache Software Foundation\Apache2.2가 경로가 될 것이다. 설치해준 다음에 Apache2.2\conf\httpd.conf파일을 열어서 126라인 정도의 LoadModule부분에 다음라인을 추가한다.
    1. #LoadModule version_module modules/mod_version.so   
    2. #LoadModule vhost_alias_module modules/mod_vhost_alias.so   
    3. LoadModule python_module modules/mod_python.so       // 추가된 라인   


  • pysqlite 는 파이썬에서 sqlite 디비에 접속하게 해주는 역할을 하기 때문에 필요하다. 이 사이트가 이렇게 생기지 않았던것 같은데 뭔가 다른걸 준비하고 있는것 같다.(정확히 해석이 안되서...) 여기서는 pysqlite-2.4.1.win32-py2.5.exe 를 사용했다.

  • enscript 는 Trac상에서 소스코드를 볼 때 소스코드의 Syntax Highlight를 해주는 역할을 한다. enscript-1.6.3-9-bin.exe를 설치했다.

  • 아~ 힘들다.. 이제 드디어 Trac을 설치한다. Trac의 다운로드페이지 에서 다운로드를 할 수 있고 현재 버전은 0.11.2.1이다.  이것 역시 그냥 설치해주면 된다.



설정하기
이제 설치가 완료되었다. 이제 Trac을 사용하기 위해서 설정을 해주어야 한다. 하나의 Trac에서 여러개의 프로젝트를 관리할 수 있으면 프로젝트마다 하나씩 생성해 주면 된다. 트랙의 프로젝트 관리는 trac-admin.exe가 담당하고 있다.

사용자 삽입 이미지

먼저 Trac의 프로젝트를 관리할 폴더를 만든다. 여기서는 C:\에 trac라는 폴더를 만들었다. 그리고 C:\Python25\Scripts로 이동해서

trac-admin.exe c:\trac\TestProject initenv

라는 명령어를 입력한다. 여기서 TestProject는 프로젝트명으로 원하는 이름을 입력해주면 된다. 실행시키면 위의 화면처럼 Project Name를 묻는 부분이 나오고 원하는 프로젝트 명을 입력해주면 된다.

그 다음에는 Database connection string과 Repository type를 묻는데 여기서는 기본값 그대로 사용할 것이므로 둘다 엔터를 눌러서 넘겨주면 된다. sqllite를 안쓰거나 svn이 아닐 경우 다른 값을 입력해야 한다. 그 다음에는 Path to repository를 묻는데 원하는 프로젝트의 Repository경로를 입력해 주면 된다.(여기서는 다루지 않았지만 SVN에서 설정한 Repository이다. 나는 VisualSVN 을 사용한다.)  다 입력하면 프로젝트를 설정되는 과정이 죽~ 나온다.

사용자 삽입 이미지

위와 같이 Congratulations!가 나타나면 설정에 성공한 것이다. 이제 trac에 접속하기 위해서 Apache 서버에 연결을 해야한다. Apache폴더 아래 conf/httpd.conf파일 맨 아래에 다음과 같은 코드를 추가한다.

  1. NameVirtualHost *:80   
  2. <VirtualHost *:80>   
  3.     <Location /trac>   
  4.         SetHandler mod_python   
  5.         PythonHandler trac.web.modpython_frontend   
  6.         PythonOption TracEnvParentDir C:\trac   
  7.         PythonOption TracUriRoot /trac   
  8.     </Location>   
  9.        
  10.     <LocationMatch "/trac/[^/]+/login">   
  11.         AuthType Basic   
  12.         AuthName "Trac"  
  13.         AuthUserFile C:\Repositories\htpasswd   
  14.         Require valid-user   
  15.     </LocationMatch>   
  16. </VirtualHost>   

PythonOption TracEnvParentDir는 위에서 설치한 트랙에 대한 폴더이고 AuthUserFil은 SVN의 레파지토리안에 있는 사용자비밀번호가 설정된 파일인 htpasswd의 경로이다.

사용자 삽입 이미지

이제 Trac이 설치된 아이피(혹은 도메인)에 위와같이 접속하면 설정되어 있는 프로젝트 리스트가 나오는 것을 볼 수 있다.

사용자 삽입 이미지

해당 프로젝트를 클릭하고 들어가서 위와같이 나오면 설치가 완료된 것이다. Timeline을 통해서 SVN의 Commit되는 상태를 확인할 수 있으면 로그인은 SVN에 설정된 아이디와 비밀번호로 로그인 하면 된다. Trac에 대한 사용법은 여기선 다루지 않는다.(나중에 기회되면...)



관리자 플러그인 설치
이로써 기본적인 Trac사용은 가능하지만 여러가지 설정을 바꾸려면 trac.ini라는 설정파일을 직접 수정해 주어야 하는데 이는 꽤 불편하다. 그래서 Ini Admin Plugin 을 설치하면 Trac에 대한 설정을 편리하게 할 수 있다.

사용자 삽입 이미지

일단 사용자에게 관리자 권한을 주어야 한다. 위와 같이

trac-admin.exe C:\trac\TestProject permission add test TRAC_ADMIN

을 실행시켜준다. TestProject는 권한을 줄 프로젝트 이소 test는 사용자 아이디이다. 이렇게 사면 test계정이 관리자 권한을 가지게 된다.

사용자 삽입 이미지

관리자 권한을 가진 계정으로 로그인 하면 오른쪽에 Admin이라는 메뉴가 생긴것을 볼 수 있다.

사용자 삽입 이미지

Ini Admin Plugin을 다운받으면 setup.py와 iniadmin라는 폴더가 생기는데 위처럼 setup.py를 실행해주면 설치가 된다.

사용자 삽입 이미지

Admin메뉴에 들어가서 Plugins에서 iniadmin 0.2에 Enabled에 체크를 해주고 적용을 하면 왼쪽 메뉴에 trac.ini라고 나오면서 ini파일에서 설정해 줄수 있는 것들을 웹상에서 간단하게 바꾸어 줄 수 있는 것을 볼 수 있다.

설치가 복잡하긴 하지만 그만큼 사용할 가치가 있는 툴이라고 생각한다
출처:http://trac.tistory.com/12

Trac을 쓰다보면 마일스톤과 버전이 어찌보면 같은 의미같기도 하고, 아닌거 같기도 하고 그렇습니다. 찾아봤더니 다른 분들도 역시나 햇갈려 하시나 봅니다.

Trac의 메일링리스트에서 다음과 같은 글을 찾았습니다.
(출처: http://www.mail-archive.com/trac@lists.edgewall.com/msg01241.html)

- A milestone is created for each future version of the software we intend to release. This includes bug fix releases as well as major planned versions.

- When a bug is found and a ticket is created, we set the version field to the version of our product in which the bug was discovered. This is later updated if the bug was found to have been introduced in an earlier version.

- If a ticket is created for an enhancement or task (i.e. anything
other than a bug) then the version field is left empty.

- Periodically I set the milestones of all tickets to be the version (s) in which we expect the bugs to be fixed or features to be introduced.

- When we tag a new release the milestone is marked as completed and
we then add the version of the new release to the version list in Trac (so that bugs can be filed against that version). A new milestone is then created for the next release in that branch.

번역을 해보면...

- 마일스톤은 릴리즈하려는 소프트웨어의 미래의 버전마다 만든다. 여기에는 버그수정이나 메이저로 계획한 버전들도 포함된다.

- 버그를 찾아서 티켓을 발행할 때, 버전 필드에는 버그를 찾은 버전으로 선택한다. 만약 이 버그가 더 이전의 버전에서 발견되었다면 나중에 해당 버전으로 업데이트해야 한다.

- 티켓이 개선사항(enhancement)나 할일(task)라면(버그가 아닌 다른 것들이면) 버전 필드는 비어둔다.

- 주기적으로 모든 티켓의 마일 스톤을 해결되거나 나중에 추가될 것으로 예측하는 버전으로 설정한다.

- 새 릴리즈를 태그할 때 마일스톤이 끝난 것으로 하고 버전 목록에 새 릴리즈 버전을 추가한다. (그래야 이 버전에 대해 버그가 발견되면 선택을 할 수 있기 때문이다.) 브랜치에는 다음버전을 위해 다음 릴리즈를 위해 마일스톤을 새로 만든다.

이렇습니다. 댓글메시지에도 나오지만 마일스톤은 "미래"이며, 버전은 "과거"를 의미하네요.
결론적으로 보면 버전의 항목들과 마일스톤의 항목들은 버전 형식("1.0", "1.1.1.1" 등)과 같이 되겠더군요. 사실 지금은 다르게 해 놓고 썼거든요.

반드시 이렇게 써야 하는건 아니겠지만, 이렇게 쓰게 되면 좀 더 전달이 잘 될 듯 합니다.
도움이 되시길...

'개발자 기본 소양' 카테고리의 다른 글

Trac 설치하기  (0) 2009.02.11
[TRAC] Admin 추가 방법  (0) 2009.02.08
[Trac] 마일스톤(milestone)과 버전(version)을 어떻게 구분해서 쓰시나요?  (0) 2009.02.07
[TRAC] ticket properties 추가 및 삭제  (0) 2009.02.07
DRM  (0) 2009.02.04
NAND에 관하여  (0) 2009.01.16
출처: http://astein.egloos.com/3619576

어제 회의를 하다보니 trac & svn을 제가 맡게 되었네요 -_-...

 그래서 처음 써 본 trac... 첫 번째 임무로 ticket property modify가 내려졌군요 :<

 * 새로운 ticket properties 추가

  1. conf/trac.ini를 열고, [ticket-custom] 필드를 수정한다.

  2. 좀 더 자세한 정보를 원한다면 http://trac.edgewall.org/wiki/TracTicketsCustomFields 를 참조하자.


 * 새로 추가한 ticket properties의 삭제

  1. conf/trac.ini에서 기존에 추가되어 있는 [ticket-custom] 필드를 삭제한다.

  2. 아파치 서버를 재시작하자. ( sudo /etc/init.d/apache2 restart )


 * 기존에 있는 ticket properties 삭제 (예를 들어 version)

  1. trac-admin help를 살펴보면, version이 있는 것을 찾을 수 있을 것이다.

  2. trac-admin (해당 디렉토리) version list 를 통해 어떤 항목들이 있는지 찾은 후, 

     trac-admin (해당 디렉토리) version remove 를 이용하여 모든 항목을 지운다.