잊지 않겠습니다.

사용하던 Trac에서 redmine으로 이전하기로 결정하였다. redmine으로 이전하기로 한 이유는 다음과 같다.


1. Gantt chart 및 calandar를 이용한 프로젝트 관리가 용이하다.

2. Forum 기능이 기본으로 제공된다.

3. SVN 서버와 동일 서버에 설치될 필요가 없다. 

4. issue의 start date와 end date가 제공되며, issue work log를 작성 가능하다. 




redmine 설치 (for windows)


1. ruby instance download

http://www.rubyinstaller.org/ 에서 제공하는 windows용 installer를 이용

2. mysql download & install

3. ruby gem update

: gem update --system

: gem update

4. ruby devkit download & install

http://www.rubyinstaller.org/ 에서 제공. native build시에 필요한 파일들이 포함되어 있다.

: ruby directory에 dev folder 생성, 압축을 풀어서 넣어준다. 

5. windows path 등록

: mysql/bin, ruby/bin, dev/bin, dev/mingw/bin 를 windows path에 등록한다. 

6. ImageDrive 설치

: http://www.redmine.org/projects/redmine/wiki/HowTo_install_rmagick_gem_on_Windows

: set CPATH=C:\Program Files\ImageMagick-6.7.7-Q16\include

: set LIBRARY_PATH=C:\Program Files\ImageMagick-6.7.7-Q16\lib

7. install bundler

: gem install bundler

8. mysql DB 준비

  > create database redmine character set utf8;

  > create user 'redmine'@'localhost' identified by 'my_password';

  > grant all privileges on redmine.* to 'redmine'@'localhost';

9. redmine source download

10. redmine bundler gem install

: 개발환경이나 테스트 환경이 아니고, postgresql을 사용하고 있지 않기 때문에 이 부분을 제외하고 설치를 진행한다.

: bundle install --without development test postgresql

11. session token 생성

: rake generate_secret_token

12. mysql db schema 생성

: set RAILS_ENV=production

: rake db:migrate

13. default data load

: rake redmine:load_default_data --q

14. run redmine

: ruby script/rails server webrick -e production


* msvcrt-ruby18.dll 를 발견할 수 없다는 에러가 발생하는 경우, gem uninstall json을 시킨 이후에, bundle install 작업을 다시 한다.

14번과정까지 모두 마쳐지면, 이제 redmine을 사용할 수 있는 준비가 모두 된 상황이다. 






trac migration 작업


redmine은 기본적으로 trac에서 migrate되서 기본 project를 생성하는 기능을 제공한다. 명령어는 다음과 같다.

rake redmine:migrate_from_trac RAILS_ENV="production"


그런데, 이 migration 기능은 다음과 같은 문제점을 가지고 있다.

1. 한글명으로 된 첨부 파일이 ticket 또는 wiki에 있는 경우 migration 실패

2. trac에서 sqlite3를 사용한 경우, 날짜 값이 정상적으로 표시되지 않음

3. ticket과 issue의 데이터 차이로 인해, closed된 issue들이 모두 start_date와 end_date가 정상적으로 표시되지 않음

4. trac에서 사용된 head format이 redmine과 다르기 때문에 wiki 페이지가 정상적으로 표시되지 않음


이 4가지 문제점은 1, 2번은 migration을 수행하기전에, 3, 4번은 migration을 수행한 후 mysql의 데이터를 변경해서 수정 가능하다. (물론 3, 4번을 해결하기 위해서 migration부분 redmine 코드를 수정해서 migration을 수행해도 된다.)


1번 문제점은 노가다로 해결을 봤다.; 한글로 된 첨부파일 및 Image를 모두 제거하고, 영문으로 이름을 변경후에 다시 첨부하는 노가다 작업을 해서 해결을 했다. ruby에서 설정된 cp949 format의 한글을 정상적으로 decoding을 못하는 느낌인데... 일단 노가다로 되는 문제였어서;; 노가다로 해결;


2번은 unix에서의 timestamp을 mysql timestamp로 변경시킬 때 나오는 에러다.. trac.db 파일을 sqlite browser로 열어 다음과 같은 query를 실행한다.

UPDATE ticket SET time = time / 1000000 where time > 9999999999;

UPDATE ticket SET changetime = changetime / 1000000 where changetime > 9999999999;

UPDATE ticket_change SET time = time / 1000000 where time > 9999999999;

UPDATE milestone SET due = due / 1000000 where due > 9999999999;

UPDATE milestone SET completed = completed / 1000000 where completed > 9999999999;

UPDATE version SET time = time / 1000000 where time > 9999999999;

UPDATE auth_cookie SET time = time / 1000000 where time > 9999999999;

UPDATE session SET last_visit = last_visit / 1000000 where last_visit > 9999999999;

UPDATE session_attribute SET value = value / 1000000 where value > 9999999999 and name = 'query_time';

UPDATE attachment SET time = time / 1000000 where time > 9999999999;

UPDATE wiki SET time = time / 1000000 where time > 9999999999;

UPDATE revision SET time = time / 1000000 where time > 9999999999;


1, 2번 문제를 해결하면 migration 작업은 정상적으로 수행된다. migration이 수행된 후에 3,4 번 문제를 해결하도록 한다.


3번 문제점은 trac의 ticket은 start_date와 end_date 및 done_ratio를 지원하지 않기 때문에 issue의 값들이 null로 나오기 때문에 나오는 현상이다. 종료된 ticket의 생성날짜를 start_date로, 최종 변경날짜를 end_date로 변경해서 캘린더와 간트차트를 정상적으로 표시되게한다. 다음 query를 mysql에서 실행한다.

update issues set due_date = updated_on, start_date = created_on, done_ratio = 100 where status_id = 5;


4번 문제점은 migration된 trac wiki와 head format과, image 표시 방법, Table 표시방법이 다르기 때문에 나오는 문제상황이다.이 부분은 간단한 console 프로그램을 작성해서 해결했다. NHibernate를 기반으로 작성되어 있다. app.config에 redmine db 접속 정보만 넣어주고 실행시키면 된다.

RedmineWikiConvert.zip



trac에서 redmine으로 migration을 모두 마쳤다. T-T

약간 한가지 문제가 있는 것이, Grantt chart의 image export시에 한글이 모두 깨지는 문제가 발생하는데. 이에 대한 해결책은 gantt.rb 파일의 411 line에 다음과 같은 코드를 추가시켜주면 된다.


원 코드(굵은 색이 추가된 코드)

gc = Magick::Draw.new

gc.font = "G:\\Redmine\\font\\NanumGothic.ttf" (사용할 font의 ttf 파일 path를 넣어준다.)


Posted by Y2K
,