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.1爲git服務器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組,包含admin和jinjj2個用戶
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庫內,進行創建文件,修改,提交等操作。