Redmine-Gitolite으로 Redmine에 Gitolite를 연동하면 아래와 같은 이점이 있습니다.
- Redmine에서 직접 Git Repository를 생성할 수 있다.
- GitHub와 유사하게 Redmine에서 Git Repository 접근을 위한 publickey를 등록할 수 있다.
- Redmine 계정 기반으로 사용자들의 Git Repository 접근 권한을 편하게 관리할 수 있다.
아래 링크를 참고하시면 Redmine 설치는 10분 이내에 끝나니 여기서는 Gitolite와 Redmine+gitolite plugin설치 및 연동만 다룹니다.
- Redmine 공식 설치 가이드 : http://www.redmine.org/projects/redmine/wiki/RedmineInstall
Gitolite 설치
Gitolite는 Gitosis와 유사한 ssh 기반의 Git server 관리툴입니다. Gitosis는 python으로, Gitolite는 perl로 구현되었다는게 조금 다를 뿐이죠. (Gitolite home: https://github.com/sitaramc/gitolite)
자세한 내용은 홈페이지를 참고하시고, 여기서는 빠른 설치를 위해서 속성으로 가이드하겠습니다. ^^
## install gitolite git clone git://github.com/sitaramc/gitolite gitolite-source cd gitolite-source sudo mkdir -p /usr/local/share/gitolite/conf /usr/local/share/gitolite/hooks sudo src/gl-system-install /usr/local/bin /usr/local/share/gitolite/conf /usr/local/share/gitolite/hooks ## add user 'git' sudo adduser --system --group --disabled-password --shell /bin/bash --home /opt/gitolite git ## generate key for admin ssh-keygen -t rsa cp ~/.ssh/id_rsa.pub /tmp/USERNAME.pub ## init gitolite sudo -H -u git gl-setup /tmp/USERNAME.pub
gitolite 초기화할 때 설정파일이 열리게 되는데 이때 아래처럼 repository의 umask 값을 바꿔줍니다.
# ------------------------------------------------------------------------------
# most often used/changed variables
# ------------------------------------------------------------------------------
$GL_WILDREPOS = 0;
$PROJECTS_LIST = $ENV{HOME} . "/projects.list";
#$REPO_UMASK = 0077;
#0077에서 아래처럼 0027로 바꿔줍니다.
$REPO_UMASK = 0027;
이렇게 umask값을 바꾸는건 redmine에서 gitolite repository를 읽을 수 있어야 하기 때문입니다. redmine이 실행되는 사용자 계정이 redmine이라면 아래처럼 git group에 추가시켜줍니다.
> sudo addgroup redmine git
그리고 ‘redmine’ user가 gitlite-admin repository에 접근할 수 있도록 아래와 같이 publickey를 추가합니다.
sudo -H -u redmine ssh-keygen cp ~redmine/.ssh/id_rsa.pub /tmp/redmine.pub git clone git@localhost:gitolite-admin.git cd gitolite-admin cp /tmp/redmine.pub keydir/
이제 gitolite-admin/conf/gitolite.conf 파일에도 redmine user로 gitolite-admin에 접근할 수 있도록 아래처럼 내용을 수정합니다.
repo gitolite-admin
RW+ = oddpoet redmine
repo testing
RW+ = @all
이제 gitolite-admin을 commit하고 push합니다.
git add . git commit -m "add redmine user' git push origin master ## 아래 명령이 잘 수행되면 성공! sudo -H -u redmine git@localhost:gitolite-admin.git
Redmine-gitolite 설치
redmine-gitolite plugin은 redmine-gitosis(https://github.com/rocket-rentals/redmine-gitosis)에서 fork되었습니다만, original plugin도 그렇고 다수 fork들도 제 환경에서는 문제들이 많더군요. 그래서 제가 patch한 버전(https://github.com/odd-poet/redmine-gitolite)을 씁니다.
편의를 위해 redmine의 설치 경로가 ~/redmine/apps/redmine 이라고 가정하겠습니다.
# 필요한 gem 설치. gem install lockfile # plugin 설치 sudo -H -i -u redmine cd apps/redmine script/plugin install git@github.com:odd-poet/redmine-gitolite.git rake db:migrate_plugins
이제 rails만 재시작해주면 redmine>관리>플러그인 페이지에 redmine-gitolite 가 보이고 설정으로 들어가면 아래와 같은 화면을 볼 수 있습니다. 여기에 Repository 정보를 잘 입력해주시면 됩니다.

redmine_gitolite 설정
그리고 publickey는 내계정 페이지서 등록 및 관리할 수 있습니다.

publick_key 등록
좋은 글 감사히 잘 보았습니다.
내용을 참고로 해서 gitolite와 plugin을 설치했습니다. 그런데 아무런 오류 메시지도 생기지 않는데 프로젝트를 생성해도 git 저장소가 생성되지 않는군요.
레드마인 로그에도 아무런 오류 메시지도 남지 않아 애를 먹고 있습니다.
설정-저장소에서 Git을 선택하고 생겨난 저장소 메뉴에 들어가면 “Repository does not exist. Create one using the instructions below.” 메시지와 명령들이 나오구요.
gitolite와 plugin을 설치하면 프로젝트 생성시에 자동으로 저장소까지 만들어주는 것으로 생각했는데 왜 프로젝트를 만들어도 저장소가 안 만들어지는지 모르겠습니다.
혹시 짐작가는 것이 있으면 조언 좀 부탁드리겠습니다.
gitolite는 bare repository까지는 생성해줍니다만,
bare repository만으로는 변경이력을 보여줄게 없어서 instruction 이 보여지게 됩니다. 그래서 첫번째 git push후에 저장소 페이지가 정상적으로 보여지게 됩니다.
그리고 repository가 정상적으로 생성되었는지 확인하시려면, git repository(위 예에서라면 /opt/git/repositories)에 PROJECT_NAME.git 디렉토리가 생성되었는지 확인해보시면 됩니다.
만약 없다면 redmine-gitolite plugin이 정상적으로 작동하지 않고 있는 상황입니다.
저도 bookworm 님과 같은 증상이었는데 제 경우에는 redmine이 실행되는 계정이 git directory에 접근 하여 R/W 할 수 있는지가 관건 이었습니다. 테스트 삼아 모든 권한을 열어줘 봤더니 잘 동작을 하는 것을 보고 힌트를 얻었습니다.
좋은 글 감사드립니다. ^.^;;