背景
????????工作需要,要把代碼由SVN改為Git管理,公司有自己的Git服務器,但是抱著學習的態(tài)度,還是決定自己搭一臺玩玩。度娘了一下,呵,還真不少,瀏覽了幾篇度娘上靠前的幾篇,挑了兩篇覺得靠譜的,就開始有點小激動的按照教程動手了。也正是因此,掉進了萬劫不復的坑。
? ????? 1天2天3天。。。一個多星期過去了,不管怎么嘗試,權限管理就是不好使。偶然間,在一個填坑的過程中,看到有人說gitosis是比較老舊的權限管理工具,已經停止維護了。看到這里,一萬個那什么從心中飄過。。(度娘出來的結果,基本上全都是git+gitosis的啊),不過還好,在給gitosis填坑的過程中,也學到了很多東西。
? ? ????二話不說,立馬換掉gitosis,通過了解學習,知道有下面三種主流的Git服務管理工具(方案):
- Gitosis - 輕量級, 開源項目,使用SSH公鑰認證,只能做到庫級的權限控制。目前項目已經停止開發(fā),不再維護。
- Gitolite - 輕量級,開源項目,使用SSH公鑰認證,能做到分支級的權限控制。
- Git + Repo + Gerrit - 超級重量級,集版本控制,庫管理和代碼審核為一身??晒芾泶笮图俺笮晚椖?。
????那么就毫無疑問的選擇Gitolite了。
搭建
一,創(chuàng)建 git 賬戶
1,在服務器上創(chuàng)建git賬戶,系統(tǒng)偏好設置->用戶與群組

這里最好選擇為管理員身份。不是必須的,僅僅為了方便。
2,打開遠程訪問
注銷,切換到git賬戶登錄,系統(tǒng)偏好設置->共享,打開遠程共享。(文件共享和遠程管理可以不打開,因為我是用的一臺Macmini,沒有顯示器鍵盤等配件,所以需要另一臺電腦操控它)

二,安裝gitolite
創(chuàng)建文件夾bin
$ cd ~
$ mkdir bin
從github克隆gitolite的源碼
$ git clone https://github.com/sitaramc/gitolite.git
安裝gitolite(home代表你的git賬戶所在的目錄,我的電腦是Users,所以這里對應的就是/Users/git/bin/,本文后面的指令里有用到home的地方也同理)
$ ./gitolite/install -to /home/git/bin/
至此gitolite的安裝完成,可以查看bin目錄里的內容。

三,回管理員主機(自己機器)上生成密鑰對
1,配置git用戶名和郵箱,這是因為git提交都需要這兩個信息,在命令行輸入:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
2,生成密鑰對,在命令行輸入:
ssh-keygen -t rsa -C "youremail@example.com"
然后一路回車,使用默認值即可,無需設置密碼。生成的秘鑰對在.ssh文件夾下(需顯示隱藏文件才能看到.ssh)

.pub結尾的就是你的公鑰,就是要把它放到服務器上,達到免密碼登錄驗證的目的。
四,配置gitolite管理員
把剛才得到的公鑰拷貝到服務器桌面(隨便一個你能找到的位置就可以)。怎么拷貝,U盤,郵件,QQ隨你便。改一下公鑰名字,為你的郵箱名字youremail@example.com.pub。
為gitolite配置管理員,命令行輸入
$ /home/git/bin/gitolite setup -pk /home/git/Desktop/youremail@example.com.pub
配置SSH
修改sshd配置文件(/etc/ssh/sshd_config),找到以下內容,并去掉注釋符”#“(非root用戶沒有權限直接修改此文件,拷貝一份出來,改好再考進去替換掉原來的就可以了)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile? /home/git/.ssh/authorized_keys
重啟ssh服務
service sshd restart
很奇怪的是我的機器找不到service指令,所以用以下指令手動重啟了下
1.啟動sshd服務:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
2.停止sshd服務:
sudo launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
3查看是否啟動:
sudo launchctl list | grep ssh
如果看到下面的輸出表示成功啟動了:
--------------
-?0?com.openssh.sshd
至此,整個服務器就搭建完畢了。
剩下Gitolite權限管理的相關知識和怎么操作網上就比較多,也比較靠譜了,大家自行百度吧。這里就不在詳解了。