如果要自行架設git server控管專案權限的話,需要安裝gitolite
1.安裝
#安裝基本的git-core sudo apt-get install git-core #安裝git server (gitolite) sudo apt-get install gitolite #新增git user(新增git 家目錄、user、group、shell為bash且不需要密碼) sudo adduser --system --group --shell /bin/bash --disabled-password --home /home/git git
gitolite設定
#變身成git,設定基本路徑 sudo su git echo "PATH=$HOME/bin:$PATH" > ~/.bashrc source ~/.bashrc #產生 gitolite 基本設定 mkdir tmp //管理者的public key,建議使用帳號管理,ex:johnsonlu.pub vim tmp/admin.pub #匯入管理者public key gl-setup tmp/admin.pub #接著會進入.gitolite.rc設定,可以將$REPO_UMASK = 0077 改成 $REPO_UMASK = 0027,讓git group也可執行(非必要)
使用gl-setup後,就會產生相關檔案在/home/git下
- .gitolite:存放log、repository權限設定檔、key等地方
- repositories:存放repository內容
- .gitolite.rc:gitolite設定檔
新增repository及user
#切換到管理者 user ex:su johnsonlu #gitolite repository管理也是透過git git clone git@your-domain:gitolite-admin
gitolite-admin裡有兩個主要檔案
- conf/gitolite.conf:repository設定檔
- keydir:存放public key,管理使用帳號命名user1.pub、user2.pub,如果帳號相同可以使用user@machine.pub代替
conf/gitolite.conf
#設定group @developers-admin = johnsonlu calos repo gitolite-admin RW+ = johnsonlu repo testing #所有key都可以操作 RW+ = @all #可針對branch做權限調整 repo decorate RW+ master = #developers-admin
基本讀寫權限分類
- C : 建立
- R : 讀取
- RW : 讀取、寫入
- RW+ : 讀取、寫入、對 rewind 的 commit 做強制 push
詳細設定可以參考 這裡