如何在區域網搭建git伺服器

weixin_34402090發表於2013-12-30

在創業公司,什麼東西都要自己搞定,除了開發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來獲得的,其中還有很多內容和細節大家可以參考。

相關文章