redmine整合GIT版本庫

2022-09-20 04:00:09 字數 2037 閱讀 3878

伺服器的環境:

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

gitcd git

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

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執行使用者組

usermod -ag www-data gituser

5 測試

在redmine中新建乙個git版本庫,填入映象版本庫的路徑。在「版本庫」tab標籤中,可以看到版本庫的內容。測試git hooks:在本地開發機的git中,向版本庫做一次提交。再開啟redmine,看能否看到新提交的內容。

redmine 和 gitolite 的整合

os ubuntu 12.04 lts redmine 1.3.2 dfsg1 1ubuntu1 gitolite 2.2 1 redmine 和 gitolite 可以整合起來,github上也有外掛程式可以整合,但是由於已經使用了一段時間了,還是研究一下手動整合。1.修改預設建立版本庫的許可權 ...

redmine備份 Redmine資料庫備份及搬家

bitnami redmine的備份分2種方式 1.匯出資料庫 2.整個目錄搬家 redmineapache redminemysql redminesubversion redminethin1 redminethin2 可以開啟windows服務控制面板,然後停掉上面的5個服務,或者去bitna...

git 刪除版本庫

在git中,刪除也是乙個修改操作,我們實戰一下,先新增乙個新檔案test.txt到git並且提交 git add test.txt git commit m add test.txt master 94cdc44 add test.txt 1 file changed,1 insertion cre...