搭建git+gerrit+repo代码

    以下内容亲测验证通过。

    Git是目前最流行的分布式版本控制系统,而Gerrit是一种免费、开放源代码的代码审查软件,使用网页界面。利用浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。它使用Git作为底层版本控制系统。趁着做测试的机会,简单学习了解一下Git+Gerrit是如何搭建使用的,顺便简单做个小笔记。

1:安装git

sudo apt-get install git-core openssh-server openssh-client

2:安装Gerrit

    首先建立gerrit用户:

sudo adduser gerrit
sudo passwd gerrit
su gerrit

 gerrit是由java开发的,封装成了一个war包,所以需要java环境,首先在服务器端执行java --version查看一下有没有配置好java环境。这里我下载:jdk-7u45-linux-i586.tar.gz使用下面命令安装:

sudo tar zxvf ./jdk-7u45-linux-i586.tar.gz -C /opt

    然后配置环境变量:

vim ~/.bashrc
添加如下内容:
JAVA_HOME=/opt/jdk1.7.0_45
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    下载gerrit。这里我直接在百度上搜索gerrit某个固定版本,gerrit的war包,通常包名为gerrit-xxx.war,xxx为版本号,这里我下载gerrit-2.11.war。

    安装gerrit:

java -jar gerrit-2.11.war init -d review_site
    基本上一路回车就可以了,注意其中身份验证时我选择了HTTP,此认证方式需要配置apache的反向代理,当然也有其他认证方式可选。这里选择http认证方式,并在apache中配置web站点的口令认证,通过口令认证后gerrit在创建账号的过程中会询问用户的邮件地址并发送邮件。gerrit数据库选择默认的H2即可。

Behind reverse proxy           [y/N]? y

这里配置反向代理,选择y

  配置gerrit:

vim review_site/etc/gerrit.config
[gerrit]                                                                                                                        
     basePath = git
     canonicalWebUrl = http://192.168.1.252:8080/
[database]
     type = h2
     database = db/ReviewDB
[index]
     type = LUCENE
[auth]
     type = HTTP
[sendemail]
     smtpServer = smtp.exmail.qq.com
     smtpServerPort = 465
     smtpEncryption = SSL
     smtpUser = emailaddr@example.com
     smtpPass = emailpasswd
     from = emailaddr@example.com
[container]
     user = gerrit
     javaHome = /opt/jdk1.7.0_45/jre
[sshd]
     listenAddress = *:29418
[httpd]
     listenUrl = proxy-http://*:8081/
[cache]
     directory = cache
  安装apache2服务器:
sudo apt-get install --reinstall apache2  apache2.2-common
  配置apache2服务器:

  开启代理功能、复写功能:

cd /etc/apache2/mods-enabled
ln -s ../mods-available/proxy.load 
ln -s ../mods-available/proxy.conf
ln -s ../mods-available/proxy_http.load
ln -s ../mods-available/proxy_balancer.conf
ln -s ../mods-available/proxy_balancer.load
ln -s ../mods-available/rewrite.load
ln -s ../mods-available/ssl.conf
ln -s ../mods-available/ssl.load
 配置apache2的监听端口:

vim /etc/apache2/port.conf
NameVirtualHost *:80
NameVirtualHost *:8080	//添加
Listen 80
Listen 8080	//添加
 配置反向代理:
sudo vim /etc/apache2/httpd.conf

<VirtualHost *:8080>                                                                                                            
     ServerName 192.168.1.252
     ProxyRequests Off
     ProxyVia Off
     ProxyPreserveHost On
     AllowEncodedSlashes On
     RewriteEngine On
     RewriteRule ^/(.*) http://192.168.1.252:8081/$1 [NE,P]
 
     <Proxy *>
         Order deny,allow  
         Allow from all
     </Proxy>
 
     <Location /login/>
         AuthType Basic
         AuthName "Gerrit Code Review"
         Require valid-user
         AuthBasicProvider file
         AuthUserFile /home/gerrit/review_site/etc/passwd
     </Location>
 
     ProxyPass / http://192.168.1.252:8081/
 
</VirtualHost>
 在主机配置文件中加入httpd.conf,使其生效:
sudo vim /etc/apache2/apache2.conf
加入include httpd.conf	如果有就不用加了
 设置第一个gerrit用户的账号和密码:
touch ./review_site/etc/passwd
htpasswd -b ./review_site/etc/passwd admin admin
 (后续再添加gerrit用户可使用:$:htpasswd -b ./review_site/etc/passwd UserName PassWord)

 启动gerrit服务:
./review_site/bin/gerrit.sh start
 重启apache2服务:
sudo /etc/init.d/apache2 restart
 到这里基本就配置的差不多了,在客户端访问http://192.168.1.252:8080/,用刚才创建的admin用户登录,系统自动将该用户注册为gerrit账户。(注:第一个登录的用户自动注册为管理员(gerrit账号ID为1000000的账号))

 注意:用htpasswd命令创建HTTP认证时,并没有在gerrit数据库中创建账号信息,当登录成功后,gerrit会自动创建同名的gerrit用户。如果在htpasswd命令创建账号之前,gerrit数据库中已经存在同名的gerrit用户(如:直接通过操作数据库添加的),那么web登录时,不会讲htpasswd命令创建的账号和gerrit数据库中的同名用户关联起来,而是自动新创建一个gerrit用户与之关联(即一个新的gerrit用户ID),而且会要求你手动输入gerrit用户名。

 gerrit网页端配置:

 登录,浏览器输入192.168.1.252:8080回车验证身份:


 账户信息配置,点击右上角Settings:



 Contact Information配置全名和邮箱,全名会在右上角显示,邮箱用户后续操作中会有提示作用。

 添加个人公钥:只有添加公钥之后,本地用户才能访问服务器的代码库。


 到这里基本配置完成。接下来在本地安装repo。

3:安装repo

 下载repo.git:

mkdir -p ~/gitCfg
cd ~/gifCfg
git clone http://gerrit.googlesource.com/git-repo git-repo.git
如果上面的地址无法连接,可以尝试下面的地址:
git clone http://review.mfunz.com/git-repo git-repo.git
 配置repo:

 将git-repo.git目录下的repo拷贝到/usr/bin/目录下:

cd git-repo.git
sudo cp repo /usr/bin/repo
 这时所以的准备工作都完成了,这里在客户端可以测试ssh是否可以连接:执行ssh -p 29418 192.168.1.252,如果连接成功,就可以做接下来的工作了,成功连接提示如下:这里我重新创建了一个gerrit账号:


 这个时候代表ssh连接成功,我们就可以操作gerrit服务器和代码服务器了。

 首先repo只是一个python写的脚本程序,是对git命令的封装,git用来管理单个的git仓库,而repo是用来管理多个被git管理的git仓库的,repo的核心就是清单库文件,repo指令会通过制定的清单文件来下载多个或者单个git仓库。这里我们首先创建清单库,并建立默认的清单文件。

 创建清单库:

ssh -p 29418 admin@192.168.1.252 gerrit create-project --empty-commit --name manifest
ssh -p 29418 admin@192.168.1.252 gerrit create-project --empty-commit --name test

 这个时候就可以在gerrit web页面的project->Lists下面看到manifest和test仓库了。repo默认的清单文件是default.xml来官气其他仓库的,这里先clone清单库,并创建清单文件:



     创建清单文件default.xml,内容如下:


    然后将default.xml推送到manifest仓库:

git add default.xml
git commit -m “add default.xml” default.xml
git push orgin HEAD:refs/for/master   //这句话是推送到gerrit,可以通过管理员审核,然后合并
    最后其他用户可以直接通过repo init来任意下载所有被管理的仓库代码,这里我只创建了一个呗管理的test仓库,做演示:
repo init -u ssh://username@192.168.1.252:29418/manifest.git
//这里会在当前目录下生成.repo目录,里面会包含完整的repo和清单库
repo sync		//这里会根据清单库的xml文件来同步下载xml里面的project标签定义的所以项目
   这个时候就可以看到test仓库了,可以在其下面添加各种代码,然后推送到gerrit服务器,添加审核人员,审核通过之后,会自动合并到远程代码服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值