用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文件夹里都包含些什么东东。

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