本文由ilanniweb提供友情赞助,首发于烂泥行天下
想要获得更多的文章,可以关注我的微信ilanniweb
公司代码管理使用的一直都是svn,最近由于部门童鞋的要求,希望使用git进行管理。于是就有了本篇文章git服务器的搭建。
本来是打算直接上gitlab的,这样方便,而且也一步到位的把代码管理这块处理完毕。但是经过测试发现,如果对gitlab及其相关软件不熟悉的话,直接上gitlab麻烦的事情还真多。
而gitlab依赖的软件还比较多,自己也没有太多的时间去进行长时间的测试。所以想了想还是先使用git+gitolite3方式,等后续各位开发的童鞋,都熟悉了再上gitlab。
下面开始介绍git+gitolite3的安装与配置。在安装git和gitolite3之前,我们先来介绍下,其各自的功能。
一、git和gitolite3功能介绍
git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
而gitolite3是用于配置git权限管理的。git的权限管理可以使用gitolite和gitosis这两款软件,但是目前gitosis项目已经无人维护。
考虑到软件的持续性,我们选择gitolite来管理git的权限,而gitolite最新的版本是gitolite3,所以选择安装gitolite3。
除此之外gitolite权限管理和svn的权限配置最为接近,这样为后续svn代码迁移到git能做很好的准备。
gitolite3是基于perl语言的,维护和更新都比较积极。项目地址如下:
https://github.com/sitaramc/gitolite
二、安装git和gitolite3
git和gitolite3功能介绍完毕后,我们现在来开始进行安装。git和gitolite3的安装很简单,根据OS不同,在此我们分别介绍下centos os和ubuntu os下的安装。
2.1 在centos os上安装
在centos os上的安装很简单,我们直接使用yum方式进行安装。在安装之前,需要我们安装额外的epel源。如下:
rpm -ivh http://mirrors.aliyun.com/epel/6/x86_64/epel-release-6-8.noarch.rpm
epel源安装完毕后,我们来安装git和gitolite3,如下:
yum -y install git gitolite3
查看下git和gitolite3安装时生成的文件,如下:
rpm -ql git
rpm -ql gitolite3 |tac
查看gitolite3的说明文档,如下:
cat /usr/share/doc/gitolite3-3.6.5/gitolite3-README-fedora
查看安装时生成的用户,如下:
cat /etc/passwd
通过上图,我们可以很明显看出安装git和gitolite3时,程序会自动生成gitolite3用户,并且该用户的家目录为/var/lib/gitolite3。
到此centos os上安装git和gitolite3就完毕了。
2.2 在ubuntu os上安装
ubuntu os上安装git和gitolite3,也是很简单的直接使用apt-get进行安装即可。如下:
sudo apt-get -y install git gitolite3
下图是配置管理员ssh密钥的,在此我们不进行配置。
查看下git和gitolite3安装时生成的文件,如下:
dpkg -L git
dpkg -L gitolite3|tac
查看gitolite3的说明文档,如下:
cat /usr/share/doc/gitolite3/README.Debian
查看安装时是否生成用户,如下:
cat /etc/passwd
通过上图,我们可以很明显的看出在ubuntu os上安装git和gitolite3时,默认是没有添加用户的,也就是说后续需要我们自己手工添加相关用户。
到此ubuntu os上安装git和gitolite3就完毕了。
三、配置git和gitolite3
git和gitolite3安装完毕后,我们现在来开始配置git。git的配置根据OS不同,我们也分别介绍下。
3.1 在centos os上配置git和gitolite3
centos上配置git和gitolite3比较简单。
首先我们要把一个ssh公钥文件admin.pub上传到git服务器上,然后把admin.pub复制到gitolite3用户家目录下,授权为gitolite3用户所有该文件,最后使用gitolite命令进行相关的初始化。如下:
cp admin.pub /var/lib/gitolite3/
chown gitolite3:gitolite3 -R /var/lib/gitolite3/admin.pub
ll /var/lib/gitolite3/admin.pub
切换到gitolite3用户下,执行gitolite setup初始化相关命令,如下:
su – gitolite3
gitolite setup -pk admin.pub
ls -al
查看初始化生成的仓库,如下:
cd repositories/
ll
通过上图,我们可以看到gitolite setup初始化后,会生成两个仓库gitolite-admin.git和testing.git,其中gitolite-admin.git管理git权限的仓库。
到此centos os上配置git和gitolite3就已经完毕。
3.2 在ubuntu os上配置git和gitolite3
ubuntu os上配置git和gitolite3要比centos上配置多了一步添加用户的操作,其他的操作步骤就和centos os上配置一样了。
添加gitolite3用户,如下:
sudo useradd -m -s /bin/bash gitolite3
cat /etc/passwd |grep gitolite3
添加ssh公钥文件admin.pub,并授权,如下:
cp admin.pub /home/gitolite3/
chown gitolite3:gitolite3 /home/gitolite3/admin.pub
初始化git,如下:
su – gitolite3
ssh-keygen
gitolite setup -a admin
gitolite setup -pk admin.pub
通过上图,我们可以看到gitolite setup初始化后和centos上是一样的,都会生成两个仓库gitolite-admin.git和testing.git,其中gitolite-admin.git管理git权限的仓库。
到此ubuntu os上配置git和gitolite3就已经完毕。
四、提交一个文件到git仓库
git和gitolite3安装和配置完毕后,我们就可以通过客户端进行管理git仓库。
在此我们直接使用git命令进行管理,在使用git命令之前,我们需要把前面配置git仓库时的ssh公钥文件admin.pub,和其对应的ssh私钥文件内容,全部复制到git客户端对应用户.ssh目录下的id_rsa.pub和id_rsa文件中。如下:
cat admin > ~/.ssh/id_rsa
cat admin.pub > ~/.ssh/id_rsa.pub
ssh密钥相关已经配置好后,我们现在来克隆gitolite-admin.git仓库,并修改testing仓库的权限。如下:
git clone gitolite3@192.168.1.8:gitolite-admin.git
修改gitolite3仓库权限配置文件,如下:
cd gitolite-admin
vim conf/gitolite.conf
repo gitolite-admin
RW+ = admin
repo testing
RW+ = @all
RW+ = admin
修改完毕后,然后进行提交。但是在提交之前,我们还要配置git提交时的用户名和邮箱,如下:
git config –global user.name “ilanni”
git config –global user.email “ilanni@ilanni.com”
以上配置完毕后,我们来提交刚刚操作,使用如下命令:
git add .
git commit -m ‘ilannitest’
git push
上述三行命令中,其中git add .的意思是添加本地进行的所有文件。git commit –m ‘ilannitest’的意思是本次提交都是做了什么操作,这个可以进行定义。git push的意思是把本地的提交推送到远程服务器上。
这样我们就可以直接git clone testing仓库了。
当然默认情况下admin用户也是可以直接git clone testing仓库的,在此只是为了演示。
现在我们来git clone tesing仓库,然后提交一个文件到仓库进行测试。如下:
git clone gitolite3@192.168.1.8:testing.git
通过上图,我们可以看到testing仓库,是一个空的仓库。现在我们进入该仓库目录,创建一个ilanni.txt的文件,如下:
cd testing/
vim ilannni.txt
现在提交进行的操作,如下:
git add .
git commit -m ‘ilannitext’
git push origin master
注意:如果是一个仓库,第一次进行提交git push时,要加入origin master。
在成功把刚刚的操作推送到远程仓库后,我们现在来查看git的日志,以及目前git的状态。如下:
git pull
git log
git status
注意:git pull表示拉取仓库的最新状态。
通过上图,我们可以看到git的提交log,以前git目前的状态。
到此有关使用git和gitolite3搭建git服务器就已经全部结束。
未经允许不得转载:烂泥行天下 » 烂泥:git服务器搭建