Redmine으로 소프트웨어 개발 프로젝트를 관리하고 있으면서 Subversion을 사용중이라면, Redmine 계정과 Subversion 계정이 별도로 관리하는 것이 꽤 번거로울 수 있다. 이런 번거로움을 덜수 있도록 Redmine 계정에 대해서 Subversion 접근권한을 부여하는 방법을 소개한다.

아래의 설정은 아파치 설정파일 내용으로 이와같이 설정하면 Redmine 계정으로 Subversion 접근이 가능하다. 7줄은 Subversion 저장소가 위치할 절대 경로인데, 이 설정으로는 이 디렉토리 하위 디렉토리에 Redmine에서 관리할 저장소를 만들면 된다. 11~14줄은 Redmine DB 접속 정보이다.

<VirtualHost *>
    ServerAdmin webmaster@test.net
    ServerName test.net

    <Location /svn>
        DAV svn
        SVNParentPath /svn

        Auth_MySQL On
        Auth_MySQL_Authoritative on
        Auth_MySQL_DB "redmine"
        Auth_MySQL_Host "localhost"
        Auth_MySQL_User "redmine"
        Auth_MySQL_Password "redmine"

        Auth_MySQL_Password_Table users
        Auth_MySQL_Username_Field login
        Auth_MySQL_Password_Field hashed_password
        AuthMySQL_Empty_Passwords off
        AuthMySQL_Encryption_Types SHA1Sum

        AuthType Basic
        AuthName "Authorization Realm"
        Require valid-user
        AuthUserFile /dev/null
        AuthBasicAuthoritative Off
    </Location>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

여러 프로젝트가 있고, 프로젝트별로 참여자에게만 접근 권한을 줘야하는 상황에는 위의 설정만으로는 부족하다. 그런 경우에는 아래의 설정을 추가하면 해당 프로젝트에 참가하는 계정만 저장소에 접근할 수 있게 할 수 있다. 아래 설정 중의 project_id는 Redmine의 해당 프로젝트 번호로 Redmine DB의 project 테이블을 참고하면 알 수 있다.

Auth_MySQL_Password_Clause " AND status = 1 AND id IN (select user_id from members where project_id = 1)"

또한, Subversion 경로도 아래와 같이 각 프로젝트별로 설정해줘야한다.

SVNPath /svn/project1

위와 같이 한다면, 반드시 프로젝트에 포함되어있는 계정을 Redmine에서 Subversion 저장소 설정 시에 넣어줘야한다는 문제가 남는다. 특정 계정을 사용하기가 번거롭다면 조회용 계정을 하나 만들어서 프로젝트에 포함시킨뒤에 잠궈두고, 다음과 같이 설정을 추가해도 된다. 아래에서 id는 조회용 계정의 번호로 Redmine DB의 members 테이블에서 확인할 수 있다.

Auth_MySQL_Password_Clause " AND (status = 1 OR id = 1) AND id IN (select user_id from members where project_id = 1)"

+ Recent posts