用GITOLITE管理GIT倉庫

相比於之前的Subversion,用git作版本控制軟件有太多的好處,git是一個分佈式的版本控制軟件,不像SVN一樣需要一箇中心的倉庫服務,所以你你本地安裝git後就可以自己在本地用來作版本控制了,然後當你想把倉庫分享給別人的時候,你纔會把它推送給遠程的某個git倉庫節點。這也是git工作方式與SVN不同的地方。

一般SVN經常的操作是svn checkout, svn update, svn add, svn commit,而git與之對應的是:git clone,git checkout,git pull, git add,git commit,git push。git在執行commit操作後,並還沒有將更新分享出去,而是僅僅在您本地的倉庫中保存了提交,並沒有分享到遠程的倉庫中,而我們想要分享出去的指令是git push,例如: git push origin master

今天在這裏主要介紹下如何搭建一個git的倉庫管理服務,像SVN,咱們在遠程服務器上安裝Subversion後經過配置後管理倉庫以及這些倉庫的權限。而git由於其分佈式的特點,使得本地與遠程都可以理解爲git服務器,常常我們爲了不同節點能夠分享各自的版本,我們經常使用一個遠程的倉庫來聚合大家的工作版本,其類似SVN的中心倉庫但是它又與您本地的git其實是一模一樣的,問題是咱們怎麼通過遠程的git服務來管理各個倉庫的權限呢?這就需要用到git倉庫管理軟件了,比如說gitosis、gitolite等,我們這裏介紹更爲強大的gitolite,它支持更爲詳細細緻的倉庫管理,比如分支、路徑、引用等。

useradd git 	# 創建git用戶並且設置密碼  
su git  
cd~		# cd到git家目錄,gitolite安裝在git家目錄好了  
git clone git://github.com/sitaramc/gitolite		# 克隆出gitolite代碼  
git checkoout g2 	# 使用g2版本  
cd gitolite  
mkdir-p $HOME/bin$HOME/share/gitolite/conf$HOME/share/gitolite/hooks  
./src/gl-system-install $HOME/bin $HOME/share/gitolite/conf $HOME/share/gitolite/hooks  
echo"PATH=$PATH:$HOME/bin">> ~/.bashrc  
exit		#暫時切換git用戶,待以上path設置生效  
su git  
cd ~/gitolite/  
gl-setup /tmp/admin.pub		#準備好admin.pub公鑰,admin.pub爲gitolite授權的管理員的公鑰  
# 公鑰生成辦法,首先確保當前登錄系統的用戶是你要授權管理gitolite的用戶  
sudoapt-get install ssh  
ssh-keygen -t rsa -f admin.pub 		#admin.pub只是一個文件名,可以隨意修改 

?

至此差不多已經安裝好了,在剛纔所設置公鑰的機器上,就可以clone出gitolite-admin.git倉庫了。順便說下,gitolite是通過一個名字叫做gitolite-admin.git的倉庫來管理git的。
比如,剛纔那臺機器的ip地址爲:192.168.1.101,則您可以這樣checkout出gitolite-admin.git倉庫

git clone [email protected]:gitolite-admin.git

?

克隆出來之後,你可以看到當前目錄下的gitolite-admin文件件,以後就靠他來管理倉庫了。他的目錄結構大致如下:

|- conf/
|- conf/gitolite.conf
|- keydirs/
|- keydirs/hewei.pub

gitolite.conf 主要的配置文件,包括用戶組的定義、倉庫權限管理等都在這裏,默認gitolite安裝後會有產生兩個倉庫,gitolite-amdin.git、testing.git,關於gitolite的配置文檔

keydirs/ 這個文件夾中主要存放git用戶的公鑰文件,存放格式爲:git用戶名.pub,因此只需把客戶端產生的id_rsa.pub文件一個個重命名爲xxx.pub存放於此即可。

在修改gitolite-admin.git的配置以及提交Push後,gitolite會將新的配置文件gitolite.conf編譯成真正生效的配置文件gitolite.conf-complited,這個文件存放於git家目錄的.gitolite文件夾/home/git/.gitolite/中。大家有興趣也可以研究下.gitolite文件夾裏都包含些什麼東東。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章