作者原創 請尊重知識。
第一步 配置本地、伺服器git環境 省略。
第二步 建立伺服器git賬戶 省略。
第三步 在伺服器安裝gitolite
3.1 設定gitolite工作目錄
#cd /home/git
#chown -R git:git /home/git
#chmod -R 2755 /home/git
請尊重知識,請尊重原創 更多資料參考請見 http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1
3.2下載下傳gitolite
#git clone git://github.com/sitaramc/gitolite.git
3.3安裝gitolite
#su git
#cd ./gitolite
#mkdir -p ~/bin
#./install -to ~/bin
#echo "PATH=$PATH:$HOME/bin" >> ~/.bashrc
#source ~/.bashrc 使環境變量生效
3.4 生成公鑰與私鑰
下一步需要使用到管理者的公鑰,在用戶端生成公鑰與私鑰,把公鑰上傳到git伺服器
為了友善,我在git伺服器本地生成公鑰和私鑰,也在git伺服器本地進行測試。其實把私鑰拷貝到用戶端使用也可以。
#su root 切換到root使用者
#ssh-keygen -t rsa -f jingfn
下面一直輸入“回車”就可以,生成的公鑰和私鑰在目前下面
把jingfn.pub複制到根目錄/下
#cp jingfn* /
将公鑰jingfn.pub 私鑰jingfn檔案 權限修改為git
#chown git jingfn*
3.5 setup
#su git
#cd ~/bin
#./gitolite setup -pk /jingfn.pub
這一步容易出現 如下錯誤
FATAL: '/jingfn.pub' not a readable file
FATAL: '/jingfn.pub' must have exactly one line
請仔細檢查jingfn.pub檔案的所有權是否是git. 可以考慮重新生成。
此ppk檔案是用戶端通路伺服器的ssh密鑰檔案。在克隆的時候需要用到,
在送出代碼的時候 同樣用到。隻要使用torioseGit軟體,本地一般會有pageant服務并且出現在桌面右下角。
點選開 add key 将ppk檔案加進去即可。
将會顯示下面的初始化資訊
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
3.6 生成ppk
找到剛剛生成的jingfn(私鑰,與公鑰一起生成)
下載下傳puttygen,運作puttygen,點選Conversions菜單項中的Import key ,
選擇在剛剛生成的jingfn檔案 ,在puttygen的界面上點選Save private key按鈕就可以把私鑰轉換為ppk的格式了,
并存放好自己的ppk。
3.7 克隆gitolite-admin管理倉庫
方法一 使用圖形化界面
右鍵點選 git clone
設定好 url ,其格式為 git:120.24.239.225:gitolite-admin
設定 load putty key 選擇剛剛生成并儲存的ppk檔案。
這時候就可以直接clone了。一般設定了load putty key之後,pull 和push 都是不需要填寫密碼的。
方法二 使用git bash
前提仍然是 需要先設定好 load putty key,否則不允許通過。
shell> git clone [email protected]:gitolite-admin.git
送出修改到伺服器
shell> git add .
shell> git commit -am "update gitolite conf file"
shell> git remote rm origin
shell> git remote add origin [email protected]:gitolite-admin.git
shell> git push origin master
方法三 在Linux用戶端直接克隆
shell> git clone [email protected]:gitolite-admin.git
送出修改到伺服器
shell> git add .
shell> git commit -am "update gitolite conf file"
shell> git remote rm origin
shell> git remote add origin [email protected]:gitolite-admin.git
shell> git push origin master
3.8 測試
clone到本地的gitolite-admin 倉庫,其結構為 keydir 和 conf
keydir 用于存放需要通路各個倉庫的用戶端公鑰,conf下的gitolite.conf 檔案用于配置用戶端的權限。
repo gitolite-admin
RW+ = jingfn
repo testing
RW+ = @all
在編輯gitolite.conf檔案之前,伺服器倉庫testing.git 是可以正常被clone盜本地的,并且可以寫入新的檔案。
編輯gitolite.conf檔案 去除testing 倉庫下的所有使用者
repo gitolite-admin
RW+ = jingfn
repo testing
這時候在本地 不管是push 還是pull 都是不被允許的。
到這裡 基本完成了gitolite的權限配置。
3.9 使用者組定義
repo gitolite-admin
RW+ = jingfn
repo testing
RW+ = @all
@admin = jingfn
@android_admin = jinchengLi jingfn
@android = jinchengLi ouxch fwl jingfn joie luoyy Aaron dongzhuoyue
@java_admin = jingfn
@java =jingfn joie wenquan zhengbobo
repo gitolite-admin
RW+ = @admin
repo android/..*
C = @android_admin @admin
RW = @android
repo java/..*
C = @java_admin @admin
RW = @java
repo kp-android
C = @android_admin
RW = @android
repo kp-android-old
C = @android_admin
RW = @android
repo kp-set-001
C = @java_admin @admin
RW = @java
這裡修改了gitolite.conf檔案 其權限配置設定規則是 ,定義了一組超級管理者@admin
以及 android 和java 的超級管理者和普通成員。
C 表示可以在該目錄下建立版本庫,建立版本庫的使用者擁有版本庫的所有權限。
我們隻需要添加一個 repo 并且push gitolite-admin 到伺服器,伺服器會自動建立
我們需要的新倉庫,我們隻需在本地用戶端指向伺服器git即可送出。