UbuntuServer搭建Git服務器之gitolite管理(三)

管理Gitolite,管理員的任務就比較繁重了,其所有的管理都是通過安裝gitolite是自動創建的gitolite-admin庫來操作的,下面就幾個常用的管理任務作簡單介紹。

1.  管理員克隆gitolite-admin管理庫

git+gitolite的安裝與配置參見搭建Git服務器(二),安裝後在gitadmin管理員用戶目錄下在自動創建一個用於自身管理的git庫:gitolite-admin.git。管理員可以通過git出該管理庫,在客戶端進行管理。

$git clone gitadmin:gitolite-admin //此處使用的是SSH主機別名,會在當前目錄下創建gitolite-admin

 

gitolite-admin 目錄下有兩個目錄conf/ 和 keydir/ 。

l  keydir/gitadmin.pub 文件,目錄 keydir 下初始時只有一個用戶公鑰,即 amdin 用戶的公鑰。

l  conf/gitolite.conf 文件,該文件爲授權文件。初始內容爲:

#gitolite conf

# please seeconf/example.conf for details on syntax and features

repo gitolite-admin

    RW+                 = gitadmin

repo testing

    RW+                 = @all

缺省授權文件中只設置了兩個版本庫的授權:

l  gitolite-admin,即本版本庫(gitolite管理版本庫)只有 admin 用戶有讀寫和強制更新的權限。

l  Testing,缺省設置的測試版本庫,設置爲任何人都可以讀寫以及強制更新。

2. 增加新用戶

   只要將新用戶的公鑰添加到 gitolite-admin 版本庫的 keydir 目錄下,即完成新用戶的添加。假設需要增加用戶名爲gituser的用戶。

(1)管理員從用戶那獲得公鑰gituser.pub。該公私鑰文件的生成:

$ssh-keygen –f ~/.ssh/gituser      //客戶端執行

(2)將該gituser.pub放到gitolite-admin本地的管理庫用的keydir目錄下。

$cp ~/.ssh/gituser.pub  /pathto/keydir/

(3)將該公鑰加入版本庫中

$git add /pathto/keydir

$git status

#On branch master

#Changes to be committed:

# (use “git reset HEAD <file>…” to unstage)

#

# new file:  keydir/gituser.pub

#

(3)提交對版本庫的修改

$git commit –m “add user:gituser”

(4)push到服務器,完成同步,真正添加新用戶

$git push //會有WARNING,其中的警告是說新添加的三個用戶在授權文件中沒有被引用,下面修改授權文件,爲用戶受權。

(5)爲gituser創建SSH主機別名,回到客戶端$vi ~/.ssh/config,添加以下內容:

host gituser

user gitadmin

hostname labserver

port 22

identityfile ~/.ssh/gituser

3. 更改授權文件,爲用戶授權

  新用戶添加完畢,需要重新進行授權。更改授權的方法也非常簡單,即修改 conf/gitolite.conf 配置文件,提交併 push。

 

(1)管理員進入 gitolite-admin 本地克隆版本庫中,編輯 conf/gitolite.conf

$vi conf/gitolite.conf

 

在打開的文件頂部添加:@team1 = gituser gitadmin,然後在repo testing 下添加:

RW+  = @team1 對testing版本庫以team的形式進行授權。(team又是可以嵌套如:

@allteam = @team1 @team2 @team3。對team的所有定義規則都適應於版本庫,如:

@repo1 = project1 project2, repo @repos1 @repos2

(2)添加改動,並提交,以及與同步服務器

$git add conf/gitolite.conf 

$git commit –q –m “new team @team1 auth forrepo testing.”

$git push

 

4. 在服務器創建版本庫

(1)通過管理員創建版本庫,只需要在conf/gitolite.conf中添加一個規則即可,等同步到服務器後會自動創建:

repo project

  C   = @all

RW+  =  @all

(2)上傳現有的版本庫,首先在本地創建一個版本庫project

$mkdir project && cd project

$git init

$touch README // 此處一定要創建文件,不然會出現error:

(error: src refspec master does not match any.

error: failed to push some refs to'ssh://xxxxx.com/project.git')

$git add README

$git commit –m “Initial repo.”

$git remote add origin gituser:/project.git   //此處一定要保證(1)完成,並有C(創建權限)

$git push origin master

完成現在版本庫的上傳

 

(3)使用通配符,用戶可以創建自已的版本庫,即用戶自己的版本庫空間,使用通配符需要開啓該功能位,$GL_WILDREPOS默認爲0(不開啓),在用戶的主目錄下的配置文件 .gitolite.rc 中將該功能位設置爲1:$GL_WILDREPOS = 1.

編輯conf/gitolite.conf,添加:

repo  users/CREATOR/[a-zA-Z].*

 C   =  @all

RW+  =  @all

其中CREATOR爲創建者的用戶名,算是一種宏定義。在git用戶的電腦上,進行第(2)步操作,唯一不同地方的是:

$git remote add origin gituser:/users/gituser/project.git

 

 

本篇只介紹了基本的管理操作,諸如用戶分支的權限控制、及各種權限標識符表示的意義沒有涉及,可以自行查閱相關資料。

 

 

輝輝                                                         

(FightingBull Studio)                                         

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章