在創業公司,什么東西都要自己搞定,除了開發android系統和研究內核,還要自己來搭建一個代碼管理服務器。
其實搭建一個服務器非常簡單,尤其只需要在局域網內搭建,網上已經提供好了我們需要的一切。
服務器的搭建
首先我們需要一個裝有linux系統的計算機充當服務器,我這里是一台ubuntu12.04的系統。里面默認安裝了perl和bash作為shell。
然后需要安裝git-core,openssh-server等必備軟件,在ubuntu 安裝這些軟件比較方便。
sudo apt-get install git-core openssh-server
創建一個叫做git的用戶。創建步驟和可能出現的問題可以參見這里:http://lingavin.com/blog/2013/04/27/add-new-user/
gitolite3.0
安裝環境后,就可以使用gitlote來搭建一個服務器了。首先是下載gitolite源碼。網址是:https://github.com/sitaramc/gitolite
安裝這個軟件,首先要保證$HOME/bin
文件夾存在,然后准備好客戶機的xxx.pub
文件。
這里會涉及到一個問題,什么是xxx.pub
和為什么需要用這個文件。xxx.pub
是客戶端用sshkeygen生成的公鑰。至於為什么需要初始化的時候提供這個文件,那是因為初始化后,這個提供公鑰的客戶機將成為gitolite的管理員,在客戶機里管理各個版本庫,所以需要在初始化的時候提供。
版本庫的管理不會在服務器上直接操作,而是在客戶端,通過管理一個特殊的倉庫來操作。
具體步驟就是:
git cloen git://github.com/sitaramc/gitolite
#下面這一步其實是在/home/git/bin做了一個軟連接
gitolite/install -ln
export PATH=/home/git/bin:$PATH
gitolite setup -pk xxx.pub
完成了這幾步,服務器的設置就算完成了。
客戶端
客戶端需要保證的是能夠ping通服務器端,然后就是下載gitolite-admin這個倉庫。命令如下:
#請把host_ip替換為服務器的真實ip
git clone git@host_ip:gitloite-admin.git
可以發現clone下來的版本庫里面有兩個文件夾,分別是conf
keydir
。
現在我們就通過添加一個開發者wang和添加一個倉庫android4_0_3.git來演示如何操作這兩個文件夾。
增加一個開發者
首先需要wang的公鑰,不會生成公鑰的話這里有個參考:https://help.github.com/articles/generating-ssh-keys
把wang的公鑰改名為wang.pub放到keydir文件中,然后git add
git commit
git push
收工。
增加一個倉庫
增加倉庫需要到conf目錄下,修改gitolite.conf
repo android4_0_3
RW+ = xxx
RW = wang
R = @all
加上上面內容,同樣是git add
git commit
git push
就可創建一個名叫android4_0_3的倉庫了。
其中這個版本庫賦予了不同人不同的權限。例如xxx用戶有讀寫權限和刪除等終極權限。而wang有讀寫權限和創建新分支的權限,但不可以刪除遠程版本。其他所有人則有讀的權限,也就是只要你知道倉庫,就可以clone下來。
開發者可以做的事情
你可以通過ssh git@host_ip info
來查看你可訪問的版本庫以及其地址。
最后
上面這些信息都是通過http://gitolite.com/gitolite/master-toc.html來獲得的,其中還有很多內容和細節大家可以參考。