如何在Linux上部署gerrit 服务

如何在Linux上部署gerrit 服务,第1张

1、安装ubuntu的时候可选包要选择上openSSH,如果没有选择的话,系统安装完成后手工安装openSSH服务;

2、(挪至第7步)

3、安装java 运行环境,大概需要100M的内容:

sudo apt-get install openjdk-6-jre-headless

4、安装邮件服务:

postfixsudo apt-get install postfix

注意,安装过程中会提示输入主机名,gemfield此处输入的是 civilnet.cn。

5、安装git服务

sudo aptitude install git-core git-doc

6、创建gerrit用户:

sudo adduser gerrit

sudo su gerrit

cd ~

7、下载gerrit包,这次编辑时gerrit的版本是2.8.0(最新版本)

8、安装gerrit:

java -jar gerrit-2.8.war init -d review_site

9、安装过程中会出现交互式的提问,除非gemfield本文明确指定,否则都是默认值。

10、配置完上面的步骤后,gerrit服务会自动启动。以后可以使用如下命令手工启动:/home/gerrit/review_site/bin/gerrit.sh start

11、通过如下步骤设置gerrit服务开机自启动:

sudo ln -snf /home/gerrit/review_site/bin/gerrit.sh /etc/init.d/gerrit.sh

sduo ln -snf /etc/init.d/gerrit.sh /etc/rc2.d/S90gerrit

sduo ln -snf /etc/init.d/gerrit.sh /etc/rc3.d/S90gerrit

服务自动启动脚本/etc/init.d/gerrit.sh需要通过/etc/default/gerritcodereview文件来提供一些配置。该文件的内容为:

GERRIT_SITE=/home/gerrit/review_site

NO_START=0

12、配置apache的反向代理:

ProxyRequests Off

ProxyVia Off

ProxyPreserveHost on

Order deny,allow

Allow from all

ProxyPass /code/ http://civilnet.cn:8080/

AuthType Basic

AuthName "CivilNet Code Review"

Require valid-user

AuthUserFile /home/gerrit/review_site/etc/gerrit.password

13、添加http认证用户(e.g. gemfield):

htpasswd -m /home/gerrit/review_site/etc/gerrit.password gemfield

New password:

Re-type new password:

14、可以通过浏览器访问 http://civilnet.cn/code/ 来使用gerrit了。

15、第一个注册的人就是管理员哦,比如gemfield。

16、现在你也可以去 /home/gerrit/review_site/etc/gerrit.config文件中查看刚才的配置内容了。

登录 gerrit ->激活邮箱 ->获取并保存 http credentials(提交时要用)

后续 Push, Review, Verify, Submit, 接收通知 等都需要邮箱的支持。

http 方式 Pull, Push 时用。

Pull ->Commit ->Push(带上Change-Id)

BROWSE ->Repositories。

仓库地址在仓库详情页。

Attention

Pull 时选择 "Clone with commit-msg hook" 方式以便 拿到 commit-msg (.git/hooks/commit-msg) 。

确保 commit footer 有 Change-Id 信息。

Change-Id 可从通过 commit-msg (.git/hooks/commit-msg) 生成。

Strongly recommended:

只需确保项目目录(.git/hooks/)下有 commit-msg 脚本,再配合对应 的 gerrit 插件即可在 Commit 时完成 Change-Id 的自动生成。

Idea, Eclipse 都有相应的 gerrit 插件。

用于标识 commit。

Have a look

YOUR ->Changes ->选择对应的 Change ->REPLY

对于一些进阶 *** 作或部分问题的处理,要求对 git 有一定的程度的深入了解。

rebase(变基), merge

对前一次 commit 进行微调(打补丁),不产生新的 Commit。

可简单理解为: pull = fetch + merge

参考文档 git reset

一些常见的问题及对应的解决方案。

此种情况多是由于 本地 git 配置 name, email 与 gerrit 账户名, 注册邮箱不符。

解决方案:查看并修改 git 配置属性 name, email

问题分析

这个提示表示没有新的提交。Gerrit审核根据commit

id和changeId来判断是否是新的提交。

情况一:如果确实需要提交,比如在初次建立新的分支的时候,两个分支的内容完全一模一样

解决办法:

通过git commit –amend生成新的changeId。

情况二: 合并时,合并的那些历史的 commit 节点,在 gerrit 上都已经评审过了,都是已有的 change 单,所以 gerrit 认为没有新的提交,就不让你提交评审。

解决办法:

在 git merge 的时候,加上 --no-ff 参数,是为了让它生成一个新的 commit,这样就可以提交了~(不过生成的 gerrit change 是看不到改动信息的

结合 Idea gerrit 插件的使用:

解决办法:

问题描述:相应分支挂起(可简单理解为分支状态异常)

解决方案:

在对应仓库下执行以下命令

以下是 rebase 方式(推荐)

以 gitlab 为例。

以管理员身份登录 gerrit ->创建项目仓库 repo_demo ->进入 gerrit_home/<git_dir>以 gitlab 中同名项目覆盖之(即删除 repo_demo

->再从 gitlab 克隆同名项目)

第一次调用git commit , 之后通过git commit --amend -m' ' 命令来对前面的提交进行修订,确保只产生一个commit和与之对应的change id

然后再git push review


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11180354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存