Redmine의 장점 중 하나가 바로 형상관리 도구와의 연계이다.
Git 역시 Redmine과 잘 연동이 된다.
하지만 환경 설정을 좀 해줘야 한다.
1. config/configuration.yml
- git을 사용하고 싶으면 실행파일의 경로를 알려줘야 한다.
$ cd /srv/www/redmine.whatwant.com/redmine
$ sudo nano ./configuration.yml
$ sudo nano ./configuration.yml
# = Redmine configuration file
#
# ==== SMTP server at using TLS (GMail)
#
default:
email_delivery:
delivery_method: :smtp
smtp_settings:
tls: true
enable_starttls_auto: true
address: "smtp.gmail.com"
port: 587
domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
authentication: :plain
user_name: xxx@gmail.com
password: "xxx"
# Absolute path to the directory where attachments are stored.
#
attachments_storage_path: /srv/www/redmine.whatwant.com/files
# Configuration of SCM executable command.
#
# scm_subversion_command:
# scm_mercurial_command:
scm_git_command: /usr/local/bin/git
# scm_cvs_command:
# scm_bazaar_command:
# scm_darcs_command:
#
# ==== SMTP server at using TLS (GMail)
#
default:
email_delivery:
delivery_method: :smtp
smtp_settings:
tls: true
enable_starttls_auto: true
address: "smtp.gmail.com"
port: 587
domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
authentication: :plain
user_name: xxx@gmail.com
password: "xxx"
# Absolute path to the directory where attachments are stored.
#
attachments_storage_path: /srv/www/redmine.whatwant.com/files
# Configuration of SCM executable command.
#
# scm_subversion_command:
# scm_mercurial_command:
scm_git_command: /usr/local/bin/git
# scm_cvs_command:
# scm_bazaar_command:
# scm_darcs_command:
- 윗 부분은 이메일 셋팅이고, 아랫부분이 형상관리 도구 경로를 명시해주는 부분이다.
- git을 사용하기 위해서 [ scm_git_command: /usr/local/bin/git ] 부분을 명시해주면 되는 것이다.
2. 전체 설정 - 저장소
- 위와 같이 설정을 해주면 이제 사용할 수 있다.
- 관리자 계정 (admin)으로 로그인해서 관리 메뉴를 고르고 저장소 항목을 보면 위와 같은 화면을 볼 수 있다.
- 설정이 안된 도구들은 사용할 수가 없다는 것을 알 수 있을 것이다.
3. Project 저장소
- 그러면 이제 실제 프로젝트에서의 설정을 살펴보자.
- 위와 같이 간편하게 설정할 수 있다.
- "Main repository"와 "식별자" 부분이 있는 것은 하나의 프로젝트에 복수의 저장소를 사용하는 경우 때문이다.
4. Remote Repository
- 그런데, Redmine과 Repository는 기본적으로 같은 Local에 있어야지만 된다.
- 만약 별도의 서버에 존재한다면 mirror repository를 만든다던지 해서 결국 같은 local에 위치시켜야 한다.
- 일반적으로 Redmine이 있는 서버에 다른 서버에 위치하고 있는 repository를 clone을 한다.
- 그리고, crontab 등을 이용해서 동기화를 하여 사용하는 형식을 취한다.
$ git clone --mirror git@xxx.xxx.xxx.xxx:myrepository.git
$ git remote update
$ git remote update
- 위와 같이 하면 된다고 하지만, 실제 위와 같이 운용해보지는 않았다.
5. Authority
- local에 위치한 repository를 위 스크린샷과 같이 경로만 적어주면 Redmine이 알아서 이해를 해야하는데...
- 그게 생각처럼 바로 잘 되는 경우가 없다. 그 이유는 바로 권한 !!!
- 지금 현재 필자가 구동하고 있는 Redmine은 ubuntu 패키지 설치로 apache2로 하고 있다.
- 그래서 웹서버가 www-data 계정으로 구동되고 있다.
- 따라서 Redmine에서 저장소를 보기 위해 접근하고 있는 것은 www-data 계정이다.
$ cd /srv
$ sudo chown -R git.www-data ./repositories
$ sudo chown -R git.www-data ./repositories
- 여기에선 이 글을 보고 계신 분의 설정 상황에 많이 좌우된다.
- 즉, 여기에 쓰여져 있는 내용을 참조해서 본인의 상황에 맞춰 잘 판단해서 적용해야 한다.
- 현재 repository는 git 계정으로 gitolite를 활용하여 운용이 되고 있고,
- 그래서 사용자가 접근하여 사용하는 모든 행위는 git 계정의 권한으로 이루어지고 있다.
- 그리고 앞에서 설명한 바와 같이 redmine은 apache2의 www-data 계정으로 활동을 한다.
- 그래서 위와 같이 repository 들의 소유권 중에서 그룹을 www-data로 전부 변경을 해버리자.
- 기본적으로 그룹에게 읽기 권한은 주어져 있는 상태이기 때문에 redmine에서 저장소 접근이 된다.
- 그런데, 여기에서 또 하나 고려해야 하는 것이 있다.
- 지금 현재 상태에서는 접근이 잘 되지만,
- 사용자가 push를 하게 되면 그 때 생성되거나 수정된 파일의 권한이 바뀌면서 redmine에서 저장소를 못 읽는다.
- 그렇다면, 그냥 git 계정의 정체를 바꿔버리면 간단히 해결이 된다.
- 즉, git 계정의 소속 그룹을 그냥 www-data로 바꿔버리는 것이다.
$ sudo usermod -g www-data git
- 최신 버전은 commit의 흐름도 제일 왼쪽에 visual하게 보여주어서 더더욱 마음에 든다!!!!!
Redmine 사용자 분들에게 많은 도움이 되길 기원하며....
반응형
'Development Tools > Redmine' 카테고리의 다른 글
File upload limit - Redmine + nginx (1) | 2012.07.28 |
---|---|
Ubuntu apt-get repository proxy (0) | 2012.07.21 |
Redmine 1.4.4 install in Ubuntu (0) | 2012.07.14 |
Eclipse에서 Task 관리하기 - Mylyn Overview (4) | 2012.06.16 |
Redmine plugin - Redmine-Scrumbler (애자일 스크럼) (0) | 2012.05.16 |