如果要自行架設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

詳細設定可以參考 這裡

Categories: Linux