快速搭建Git服務器

1安裝軟件

1)源碼包方式

安裝包:git-2.2.0.tar.gz        //可去官網下載http://www.git-scm.com/downloads

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

# tar zxf git-2.2.0.tar.gz

# cd git-2.2.0

# make prefix=/app/public/git all

# make prefix=/app/public/git install

# ln -s /app/public/git/bin/* /usr/bin/

  

2) rpm包方式

# yum install git

 

2 創建git用戶

# adduser git 

# passwd git

 

3 在git用戶家目錄下安裝gitolite

切換到git用戶

# su - git

 

創建文件夾bin

$ mkdir bin

 

克隆gitolite源碼

$ git clone https://github.com/sitaramc/gitolite.git 

$ ls 

bin  gitolite

 

安裝gitolite

$ ./gitolite/install -to /home/git/bin/

$ ls bin/ 

commands  gitolite  gitolite-shell  lib  syntactic-sugar  triggers  VERSION  VREF

 

4 配置gitolite管理員

複製管理員的公鑰到/tmp下(此處用本機root做管理員,也可以使用其他用戶)

# cp /root/.ssh/id_rsa.pub /tmp/admin.pub

 

切換回git用戶,爲gitolite配置管理員 

# su - git

$ /home/git/bin/gitolite setup -pk /tmp/admin.pub 

$ ls 

bin  gitolite  projects.list  repositories

5 管理員日常管理

1) 管理員clone管理庫(此處爲本地root用戶) 

# git clone [email protected]:gitolite-admin  192.168.100.1git服務器IP

 

2)添加用戶的公鑰

例如我要讓jinjj用戶訪問git服務器上的projectA

 

jinjj用戶向git服務器管理(此處是之前的服務器本地的root用戶)提交自己的ssh無密碼公鑰

 將jinjj用戶的公鑰命名爲jinjj.pub


管理員將jinjj的公鑰複製到 gitolite-admin/keydir/ 下 

# cp jinjj.pub gitolite-admin/keydir/


3)創建庫,分配用戶權限

管理員創建projectA庫,並給jinjj分配權限 

# cd gitolite-admin/conf/ 

# vim gitolite.conf

下邊定義projectA庫,並且指定用戶權限,在原配置文件基礎上添加如下內容:

……

@myGroup=admin  jinjj      //定義myGroup組,包含adminjinjj2個用戶

repo projectA   //定義git倉庫名爲projectA

RW+ =   @myGroup    //設置權限,這裏爲具有讀寫,並且允許推送權限

 

權限規則解釋如下:

             R = @test   //test 具有隻讀權限

             - = badboy  //禁用指令,讓用戶badboy只對版本庫具有讀操作的權限

             RW = @dev test1      //dev, 用戶test1對倉庫有讀寫權限

             RW+ = @admin     //admin具有讀寫權限,並且允許強行推送

 

4)管理員將對gitolite-admin的修改(建庫、加用戶)提交到git服務器

# git status

# git add gitolite.conf

# git commit -m "AddRepo:projectA;AddUser:jinjj"

# git push origin master

 

     這裏補充一點,git的版本庫都位於服務器端用戶目錄下的repositories目錄下,這是由.gitolite.rc決定的。

推送成功後,可以看到repositories目錄下多了一個projectA的版本庫.

$ ls /home/git/repositories

gitolite-admin.git projectA.git testing.git

 

6客戶端驗證

jinjj用戶克隆projectA

$ git clone [email protected]:projectA

$ ls projectA

由於是新庫,裏面什麼都沒有

然後就可以進入到projectA庫內,進行創建文件,修改,提交等操作。

 


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