-
VisualSVN Server + Bitnami Redmine Stackdev/tool 2011. 4. 25. 17:42
VisualSVN Server 의 편리한 Subversion 계정/저장소 관리 기능과, Redmine 의 강력한 이슈관리/저장소 통합 기능을 사용하여 소스 및 이슈 관리를 한다.
두개의 배포판에 각각 포함된 아파치 서버가 낭비이지만 하나의 서버만 이용하기 위해 나머지 하나를 수동으로 설치하기엔 손이 많이가는 까다로운 작업이라 둘다 사용하도록 한다.
아래는 나의 설치 과정 요약
1.둘다 기본 설치시 80 포트를 사용하므로 둘중 하나의 포트를 적당한 포트(8080)로 변경
2.깔끔하게 Subversion 에 Redmine 용 계정을 하나 만들어 모든 저장소에 접근할 수 있는 권한 할당
3.Redmine 의 관리 - 설정 - 저장소 에서 일감 참조/해결에 사용할 키워드를 설정(issue, close)
4.설정을 원하는 프로젝트의 설정 - 저장소 에서 위의 Subversion 계정을 입력하여 저장소와 프로젝트를 연결
프로젝트의 저장소 페이지가 오류없이 출력되는지 확인5.svn 의 pre-hook script 를 수정하여 소스 커밋시 Redmine 이슈와 항상 연결하도록 강제
<Redmine Root>\config\database.yml 을 참고로 mysql 계정 정보 확인
svnlook.exe, myslq.exe 실행을 위해 윈도우 PATH 에 해당 경로 추가
명령어 실행을 위한 문자열을 감싸는 따옴표가 다르니 주의 -> `pre-commit hook script 참고
ruby.exe d:\util\svn\pre-commit.rb %1 %2 pre-commit.rb 참고
repo_path = ARGV[0]
transaction = ARGV[1]
svnlook = 'svnlook.exe'
mysql = 'mysql.exe'commit_log = `#{svnlook} log #{repo_path} -t #{transaction}`
if (commit_log == nil || commit_log.length < 2)
STDERR.puts("Log message cannot be empty.")
exit(1)
endif (commit_log =~ /^\s*(?:(?:C|c)lose|(?:I|i)ssue)\s*#(\d+)\s+\S+/)
issue_number = $1
redmine_issue_open = `#{mysql} --database=xxxx --user=xxxx --password=xxxx -e "SELECT COUNT(*) AS result FROM issues I INNER JOIN issue_statuses S ON S.id = I.status_id WHERE S.is_closed = 0 AND I.id = #{issue_number};" --skip-column-names`.strip()
if (redmine_issue_open.eql?("0"))
STDERR.puts("\nIssue \##{issue_number} 가 없거나 open 상태가 아닙니다.\n이슈목록을 확인하세요.")
exit(1)
end
else
STDERR.puts("\nCommit 메시지는 다음과 같은 양식을 필요로 합니다.\n-----------------------------\n이슈 참고:\nIssue #123 message\n\nor\n\n이슈 닫기:\nClose #123 message\n-----------------------------")
exit(1)
end6.G-Mail 알림 받기 위한 플러그인 설치 및 설정 - http://xyz37.blog.me/50083113439 참고
<Redmine 설치 root>\config\email.yml 참고
production:
delivery_method: :smtp
smtp_settings:
tls: true
address: "smtp.gmail.com"
port: 587
domain: "smtp.gmail.com"
authentication: :plain
user_name: "xxxx@gmail.com"
password: "xxxx"빠진것이 있거나 추가된 내용은 추후 추가.
참고자료
http://blog.naver.com/PostList.nhn?blogId=xyz37&categoryNo=65