redmine整合GIT版本庫


服務器的環境:

Ubuntu 11.10 64位

Redmine 1.4.5.stable.10943

git version 1.7.5.4 + gitolite

前言:由於redmine的版本比較低,所以新版本的配置方法有可能有差異。請實踐者留意。

redmine和git的安裝過程掠過。

由於redmine中GIT插件自身對文件讀寫權限的限制,所以一般有2種處理方式:

1)修改已經存在的GIT版本的文件讀寫權限:改為redmine運行用戶可以訪問;

2)將GIT版本庫以redmine運行用戶的身份,創建在redmine安裝目錄中。

這2種方式,對於git+gitolite已經在運行的環境,都不適合。

所以,我們解決的思路是:以redmine運行用戶身份,在redmine中創建一個新的版本庫。這個版本庫作為目前已經存在版本庫的鏡像,專門給redmine來讀取變更歷史。開發團隊日常的提交,仍然提交到原來的版本庫。利用git的hooks,將原來版本庫的更新,同步到redmine里面的鏡像版本庫。

操作步驟:

1 在gitolite中添加redmine運行用戶

例如:redmine采用apache整合的方式,默認運行用戶為www-data。以www-data用戶,運行ssh-keygen,生成ssh key。將~/.ssh/id_rsa.pub文件,拷貝到gitolite管理目錄的keydir文件夾(需要重命名.pub公鑰文件)。

cp ~/.ssh/id_rsa.pub /path/to/gitolite/admin/keydir/redmine.pub

修改gitolite的gitolite.conf配置文件,將redmine用戶添加到目標版本庫。

2 在redmine安裝目錄中創建鏡像版本庫

以redmine運行用戶(如www-data),進入redmine安裝目錄,創建git項目目錄。

mkdir git
cd git
git clone --mirror gituser@repo-path/repo-name.git

如果clone時,提示:

R access for leviathan/leviathan2-android DENIED to www-data
fatal: The remote end hung up unexpectedly

說明第一步為git添加用戶和權限的步驟有錯誤,要返回檢查一下。

3 修改原來版本庫的hooks(*是原來的版本庫,不是新建的鏡像*)

切換操作系統用戶到安裝和創建git版本庫的user

sudo su git-user-name

進入原來項目版本庫目錄,修改hooks文件

cd /repo-path/repo-name.git/hooks
cp post-receive.sample post-receive

修改post-receive腳本,添加:

/usr/bin/git push --mirror /repo-path-to-mirror/repo-name.git

4 修改鏡像版本庫的訪問權限和添加原來git用戶到redmine運行用戶組

以redmine運行用戶(如:www-data),設置版本庫:

cd /path-to-mirror-repo/repo-name.git
git config core.sharedrepository 0644

以root用戶,將git用戶添加到redmine運行用戶組

groupmod -aG www-data gituser

5 測試

在redmine中新建一個git版本庫,填入鏡像版本庫的路徑。在“版本庫”Tab標簽中,可以看到版本庫的內容。測試git hooks:在本地開發機的git中,向版本庫做一次提交。再打開redmine,看能否看到新提交的內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM