前言
首先說明一下,這還是本人第一次寫這類文章,如有不妥,多多見諒。
基本情況
因為現在公司的人不是很多,但是還對代碼有着嚴格的管控,所以采用了gitolite的管理方式
其實正常來講,這種權限的把控在我看來沒什么必要。
我在之前沒有接觸過這個插件的時候,對它可以說是一頭霧水,現在搞懂了以后也想分享給大家
好了,廢話不多說,咱們開始吧。
一、安裝git
首先咱們要弄清楚,git是分本地以及遠端的,這里以我使用的windows電腦為例(Mac不需要安裝),
現在Git服務端安裝好Git,大部分的是系統自帶的
[root@uat1 admin]# rpm -qa|grep git libpcap-1.4.0-4.20130826git2dbcaa1.el6.x86_64 git-1.7.1-9.el6_9.x86_64
然后需要安裝windows本地的git(這里自行百度,很簡單),出現我的畫面就說明你成功了
二、獲取本地公鑰
在git客戶端(也就是你的windows電腦,以下使用名詞客戶端),執行下面的命令:
ssh-keygen -t rsa
緊接着連續回車三次,你的公鑰就會自動生成,下面是查找公鑰的方法
Murry@Savior MINGW64 ~ $ cd ~/.ssh/ Murry@Savior MINGW64 ~/.ssh $ ls id_rsa.pub id_rsa known_hosts
你會生成兩個文件,一個帶.pub的就是公鑰,另一個不帶的就是私鑰
三、在服務端安裝gitolite
然后開始安裝gitolite
首先咱們需要安裝一個git用戶,用這個用戶來進行安裝
[root@uat1 ~]# useradd git (增加用戶) [root@uat1 ~]# su - git (切換用戶) [git@uat1 ~]$ pwd (查看位置) /home/git
開始下載gitolite
[git@uat1 ~]$ git clone https://github.com/sitaramc/gitolite
緊接着,開始安裝gitolite
[git@uat1 ~]$ mkdir /home/git/bin (創建bin目錄) [git@uat1 ~]$ gitolite/install -to /home/git/bin (將gitolite安裝到目錄下) [git@uat1 ~]$ cd bin/ (進到目錄) [git@uat1 bin]$ ls (查看內容) commands gitolite gitolite-shell lib syntactic-sugar triggers VERSION VREF
這樣咱們就可以看到gitolite相關的命令了
四、配置gitolite的管理員
這里提一下,gitolite的管理員可以是自己的一台電腦也可以是一台服務器,這里咱們配置為自己的電腦
首先將之前獲取到的公鑰,也就是id_rsa.pub發送到git的服務端(也就是服務器上)
scp id_rsa.pub user@ip地址:/tmp (這里會需要輸入服務器密碼)
服務器接收到以后,將文件名改為admin.pub
[git@uat1 tmp]$ mv id_rsa.pub admin.pub
接着就開始用管理員的公鑰來進行安裝gitolite
[git@uat1 ~]$ /home/git/bin/gitolite setup -pk admin.pub
緊接着你就可以看到生成了兩個文件
/home/git/repositories/gitolite-admin.git
/home/git/repositories/testing.git
第一行的是管理者的git倉庫,第二行的就是測試倉庫
五、如何進行權限的管控
然后咱們開始生成管理員的管理倉庫
[git@uat1 ~]$ git clone user@ip地址:gitolite-admin
然后咱們進入目錄下就可以看到兩個文件
Murry@Savior MINGW64 ~/.ssh/gitolite-admin (master)
$ ls
conf/ keydir/
這兩個目錄咱們分別來看
進入conf/了解一下
Murry@Savior MINGW64 ~/.ssh/gitolite-admin (master) $ cd conf/ Murry@Savior MINGW64 ~/.ssh/gitolite-admin/conf (master) $ ls gitolite.conf
可以看到gitolite.conf這個文件,它就是用來管理git的權限文件,來打開看一下內容
Murry@Savior MINGW64 ~/.ssh/gitolite-admin/conf (master) $ cat gitolite.conf repo gitolite-admin RW+ = gitadmin repo testing
在這里我們就可以清楚地看到gitolite是怎么管理權限的 ,repo作為倉庫的名字,而下面就是
擁有權限的人,這里RW就是可讀可寫
那么問題就來了,倉庫和權限者他是怎么定義的呢
這里倉庫其實只要你寫了名字他就會自動生成,而擁有權限者的名字,就用到了keydir/目錄
這個目錄下的文件就是擁有者的公鑰,.pub前面的名字就是這里的名字
六、更改后如何從本地提交到遠端
關於這個問題只需要幾個git基本命令即可
$ git add . $ git commit -m "注釋內容" $ git push
只需要這三步操作,如果對git命令不了解建議先了解一下
到這里,我們就實現了gitolite的權限管控