092830_Git权威指南-第5篇-第32章-Gerrit
gerrit使用git review提交
gerrit使用git review提交摘要:1.Gerrit 简介2.Git Review 的使用3.Gerrit 与Git Review 的结合4.使用Gerrit 提交Git Review 的具体步骤5.注意事项正文:一、Gerrit 简介Gerrit 是一个免费的、开源的代码审查工具,它可以帮助团队更有效地进行代码审查,以提高代码质量和安全性。
Gerrit 是基于Web 的,可以与Git 等版本控制系统集成,提供便捷的代码审查功能。
二、Git Review 的使用Git Review 是Git 提供的一个命令行工具,用于对本地仓库中的更改进行审查。
通过Git Review,开发者可以在将更改推送到远程仓库之前,先让审查者检查代码。
这有助于确保代码质量,并减少在合并代码时出现的冲突。
三、Gerrit 与Git Review 的结合Gerrit 可以与Git Review 结合使用,以实现更高效的代码审查。
通过将Git Review 的命令集成到Gerrit 中,开发者可以在Gerrit 界面中直接使用Git Review 的功能,而无需在命令行中执行Git Review 命令。
四、使用Gerrit 提交Git Review 的具体步骤1.首先,确保你的本地仓库已经与Gerrit 服务器进行了关联。
2.在本地仓库中,使用`git add`和`git commit`命令将更改添加到暂存区,并提交更改。
3.在Gerrit 界面中,点击“Submit a Change”按钮,打开提交更改的对话框。
4.在对话框中,选择“Git Review”选项卡,输入审查者的Git 用户名和邮箱地址。
5.点击“Submit”按钮,将更改提交给审查者进行审查。
6.审查者将通过Git Review 工具对代码进行审查,并在Gerrit 界面中留下审查意见。
7.开发者可以根据审查意见对代码进行修改,并重新提交给审查者进行审查。
gerrit简明指南
git status 查看改动的文件 git diff 查看具体改动的内容 git add 123.cpp 准备提交123.cpp这个文件 git add . 准备提交全部更改 git commit 将改动提交到本地仓库(在出现的vi编 辑器中添加commit相关信息),慎用!新功能首次 提交时才使用这条指令 使用git commit --amend提交时,不会产生新的 commit git push origin HEAD:refs/for/abc
软件版本号由四部分组成: 第一个1为主版本号 第二个1为子版本号 第三个1为阶段版本号 第四部分为日期版本号加希腊字母版本号 常规:完全的版本号定义,分三项::<主版本号>.< 次版本号>.<修订版本号>,如 1.0.0
◦ 希腊字母版本号共有5种,分别为:base、alpha、beta、RC、 release。例如:1.1.1.051021_beta
选择项目 commit-msg hook clone
公司gerrit地 址:http://review.keeno
打开网页后,点击 project-list,然后选项目
打开项目后,选择 General 选中Clone with commit-msg hook 点3处的按钮复制指令
软件版本阶段说明 版本命名规范 版本号定修改规则
Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主, 通常只在软件开发者内部交流,一般而言,该版本软件的Bug较 多,需要继续修改。 Beta版: 该版本相对于α版已有了很大的改进,消除了严重的错误, 但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版 本主要的修改对像是软件的UI。 RC版: 该版本已经相当成熟了,基本上不存在导致错误的BUG, 与即将发行的正式版相差无几。 Release版: 该版本意味“最终版本”,在前面版本的一系列测试 版之后,终归会有一个正式版本,是最终交付用户使用的一个版 本。该版本有时也称为标准版。一般情况下,Release不会以单词 形式出现在软件封面上,取而代之的是符号(R)。
gerrit建仓规则
GERRIT建仓规则Gerrit 是一个用于进行代码审查(Code Review)的工具,通常与 Git 版本控制系统一起使用。
Gerrit 提供了一套建仓规则,以确保在团队中对代码的变更进行一致性的审查和管理。
以下是一般情况下 Gerrit 建仓规则可能包括的一些方面:分支管理:规定项目中的主要分支(通常是master或main分支)。
限制直接推送到主要分支的权限,鼓励使用代码审查进行变更。
权限控制:制定权限规则,确保只有特定的团队成员或角色才能够进行代码审查、提交和合并。
确保只有合适的人员才能够创建新的分支或仓库。
代码审查规则:规定代码审查的工作流程,包括审查的发起、分配、评论和最终决策。
强调审查人员的责任,确保每个变更都经过审查。
提交消息规范:规范提交消息的格式,以便清晰地传达变更的目的和影响。
强调提交消息应该包括适当的描述和引用相关的问题或任务。
测试要求:规定在提交之前需要通过的测试要求,确保变更是功能上和质量上都可接受的。
可能包括自动化测试、集成测试等。
变更生命周期:定义变更的生命周期,包括变更的状态、审查进度、测试状态等。
强调变更应该经历的步骤,以确保质量和一致性。
文档和注释规范:规范代码文档和注释的格式和内容,以便团队成员可以轻松理解和维护代码。
鼓励对重要的决策、设计和实现进行文档记录。
合并规则:规定在合并变更到主分支之前需要满足的条件,例如通过所有测试、至少有一定数量的审查意见等。
确保合并是有组织的、可追溯的。
通知和报告:设置通知规则,确保团队中的成员能够及时了解变更的状态和审查的进展。
可能包括通过邮件、Slack 等方式的通知。
以上仅是一般性的建仓规则,实际规则可能会因组织、项目和团队的特殊需求而有所不同。
在使用 Gerrit 进行代码审查时,建议仔细定义和遵循相应的建仓规则,以确保代码库的管理和维护的高效性和一致性。
gerrit code review 基本功能
gerrit code review 基本功能Gerrit是一个基于Git的代码审查工具,它提供了一系列的功能来优化和简化代码审查过程。
下面将介绍Gerrit的基本功能。
1.代码审查流程管理:Gerrit提供了在代码审查过程中对变更流程进行管理的能力。
它允许团队定义和配置特定的代码审核工作流程,包括分支、状态和权限等。
2.代码审查请求:开发人员可以通过Gerrit提交代码审查请求。
这包括一组Git提交,通常是一个变更集或一个特性分支。
一旦提交,Gerrit会自动触发相应的审查过程,并通知相关审查人员参与。
3.代码审查和讨论:Gerrit为团队成员提供了一个集中的平台,可以进行代码审查和讨论。
审查人员可以对提交的代码进行行级别的审查,并在其中添加评论、建议和问题。
这有助于团队合作和提高代码质量。
4.版本控制集成:作为一个基于Git的工具,Gerrit提供了与Git版本控制系统的无缝集成。
它可以直接与Git服务器通信,检索和提交Git提交,并自动处理代码补丁、合并和冲突等。
5.权限和访问控制:Gerrit允许管理员配置细粒度的权限和访问控制规则。
这样,可以确保只有授权的人员才能执行审查操作或访问特定的代码库。
这对于保护敏感信息和确保代码安全至关重要。
6.自动化构建和测试集成:Gerrit支持与自动化构建和测试系统的集成。
它可以与持续集成工具(如Jenkins)进行集成,从而实现自动构建、测试和部署等流程。
这有助于提高开发效率和代码质量。
7.统计和报告功能:Gerrit提供了丰富的统计和报告功能,用于跟踪代码审查的进展和团队的绩效。
它可以生成各种图表和报表,包括审查周期、审查人员活动和代码质量等指标。
8.用户友好的界面:Gerrit提供了一个用户友好的Web界面,使用户可以轻松导航、搜索和查看代码库和提交的详细信息。
同时,它也提供了一组强大的过滤和排序功能,以便用户可以在大型代码库中快速找到感兴趣的变更。
Git权威指南-第5篇-第32章-Gerrit
第32章Gerrit 代码审核服务器谷歌 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本库协同而引入的repo,这在前面第25章已经详细讨论过。
另外一个重要的创新就是 Gerrit ——代码审核服务器。
Gerrit 为 Git 引入的代码审核是强制性的,也就是说除非特别的授权设置,向 Git 版本库的推送必须要经过 Gerrit 服务器,修订必须经过代码审核的一套工作流之后,才可能经批准并纳入正式代码库中。
首先贡献者的代码通过 git 命令(或 repo 封装)推送到 Gerrit 管理下的 Git 版本库,推送的提交转化为一个一个的代码审核任务,审核任务可以通过refs/changes/下的引用访问到。
代码审核者可以通过 Web 界面查看审核任务、代码变更,通过 Web 界面做出通过代码审核或打回等决定。
测试者也可以通过refs/changes/之下的引用获取修订然后对其进行测试,如果测试通过就可以将该评审任务设置为校验通过(verified)。
最后经过了审核和校验的修订可以通过Gerrit 界面中的提交动作合并到版本库对应的分支中。
Android 项目网站上有一个代码贡献流程图1,详细地介绍了 Gerrit 代码审核服务器的工作流程。
翻译后的工作流程图见图32-1。
1 /source/life-of-a-patch.html图32-1:Gerrit 代码审核工作流32.1Gerrit 的实现原理Gerrit 更准确地说应该称为 Gerrit2。
因为 Android 项目最早使用的评审服务器 Gerrit 不是今天这个样子的。
最早版本的 Gerrit 是用 Python 开发运行于 Google App Engine 上的,从 Python 之父 Guido van Rossum 开发的 Rietveld 分支而来。
在这里要讨论的 Gerrit 实为 Gerrit2,是用Java 语言实现的1。
Gerrit搭建和使用流程
3.提 //提交到gerrit服务器中缓存,进入投票审核阶段 //投票满 2分,admin可以进行提交。
4.gerrit中已经搭建好了gitweb界面。 可用gitweb查看
4.Gerrit 使用简介
三、使用Gerrit-Http
实际操作。。。
1. 克隆项目(需要修改成自己姓名全拼)
$git clone ssh://caohang@192.168.61.200:29418/IPTVSettings.git
2. 第一次修改提交需要
$git config remote.origin.push refs/heads/*:refs/for/* $scp -p -P 29418 caohang@192.168.1.100:hooks/commit-msg .git/hooks/ $git add 修改内容 $git commit -m "提示信息“
二、ChangeId
:
Change-Id是一串SHA-1字符串。有hooks自动生成在我们的commit message下面:
3.Gerrit 搭建简介
一、需要软件:
nginx,apache,gitweb,Gerrit 1.Nginx : 反向代理Gerrit,否则会出现”Configure Error”页面。 2.Apache: 用作http登录用户添加。 3.Gitweb: 服务器搭建 4.Gerrit: 管理代码提交流程。
Gerrit 介绍大纲 1.Gerrit 工作流程介绍 2.Gerrit 几点介绍 3.Gerrit 搭建简介
4.Gerrit 使用简介
1.Gerrit 工作流程
未集成Gerrit: 授权库只是编译服务器的拷贝,所有开发者直接 操作编译服务器,删除和修改CI 编译服务器文件。
gerrit使用实例
gerrit使用实例摘要:1.Gerrit简介与安装2.Gerrit基本功能与操作3.Gerrit分支策略与管理4.Gerrit代码审查与审批5.Gerrit插件与扩展6.实践中的Gerrit优化与配置7.Gerrit在国内的应用案例8.总结与展望正文:一、Gerrit简介与安装Gerrit是一款基于Web的代码审查和版本控制系统,起源于Google的内部项目。
它与Git紧密结合,允许开发者在代码提交后进行审查,以确保代码质量。
在本节中,我们将介绍Gerrit的安装过程及其基本概念。
1.安装Gerrit首先,你需要确保你的系统满足Gerrit的最低需求,如Python、Java 和Git等。
然后,你可以从Gerrit官方下载对应操作系统的安装包,并根据安装向导完成安装。
2.配置Gerrit在安装完成后,你需要对Gerrit进行基本配置,包括:设置数据库、配置SSH密钥、开启Web界面等。
详细配置过程可参考Gerrit官方文档。
3.Gerrit基本概念Gerrit主要有以下几个概念:- 项目(Project):Gerrit中的基本组织单位,包含多个分支。
- 分支(Branch):项目中的代码版本,每个分支代表一个独立的开发进度。
- 提交(Commit):代码变更的单元,包含代码和提交信息。
- 代码审查(Code Review):Gerrit的核心功能,审查者在代码提交后进行审核,给出意见和建议。
二、Gerrit基本功能与操作在了解Gerrit的基本概念后,我们可以开始学习Gerrit的具体操作。
1.创建分支在Gerrit中,你可以通过Web界面或命令行创建分支。
创建分支后,你可以在此分支上进行开发。
2.提交代码将代码上传至Gerrit仓库,生成提交。
提交时,建议附带详细的提交信息,以便于审查者了解代码变更目的。
3.发起代码审查在提交代码后,你可以将代码审查请求发送给审查者。
审查者可以在Gerrit Web界面查看代码,并给出意见和建议。
gerrit 使用方法
gerrit 使用方法Gerrit是一款非常流行的代码审查工具,能够帮助团队更好地管理代码质量和版本控制。
本文将介绍如何使用Gerrit来进行代码审查。
步骤一:安装Gerrit首先,需要安装Gerrit并完成配置。
Gerrit的安装可以分为两个部分:安装Java运行环境和安装Gerrit程序。
可以通过官方网站的帮助文档获得详细的安装指导。
步骤二:创建Gerrit用户一旦Gerrit安装完毕,需要创建一个Gerrit用户。
这个用户是Gerrit管理界面的主账户,用于管理Gerrit的各项设置和配置。
步骤三:项目创建和导入在Gerrit里可以进行代码审查的前提是要有代码仓库,因此需要创建或者导入一个项目。
通常情况下,项目的仓库是从Git或其他版本控制系统导入的。
Gerrit允许根据项目名称、代码仓库 URL 等信息创建或者导入一个或多个项目,具体可以参照官方文档。
步骤四:注册用户在进行代码审查之前,还需要注册一个Gerrit用户账户。
可以在Gerrit管理页面上进行用户的注册操作,填写用户昵称、用户名、电子邮件等必填信息,并按照指引完成注册。
注册完成之后,Gerrit会自动将该用户与 Git 账户相关联起来。
步骤五:创建分支接下来,需要为项目创建一个分支以便进行代码审查。
可以在Gerrit 管理页面上创建一个分支,并将其与 Git 仓库同步。
步骤六:提交变更当分支创建好后,就可以提交变更(如新增文件、修改文件内容等)了。
有两种方式可以进行提交:一是通过 Git 命令行操作,将变更导入到 Gerrit;二是在 Gerrit 管理页面上进行变更内容的发布。
步骤七:开启审查当变更被提交时,Gerrit就会自动开启一次代码审查流程。
此时,需要审核人员对变更内容进行审查,并发布审查意见。
Gerrit会自动将审查意见发送给提交人,以便进行确认。
步骤八:发布变更如果审核人员对变更内容进行了批准,那么提交人就可以发布该变更了。
gerrit工作原理
gerrit工作原理Gerrit是一个基于Web的开源代码审查工具,旨在帮助开发团队进行高效的代码审查和合并工作。
它通过提供一个集中的、可跟踪的审查过程来管理软件开发中的变更。
Gerrit的核心理念是基于Git的代码审查。
它使用了Git仓库作为代码的存储和版本控制工具。
开发人员可以将代码推送到Gerrit上,并在提出合并请求之前,需要经过审查人员的审核。
审查人员可以通过在Gerrit上进行代码审查,提供反馈和建议,从而提高代码质量。
下面是Gerrit的工作原理的详细说明:1. 代码的提交和推送:开发人员使用Git命令将代码推送到Gerrit 服务器上的Git仓库。
Gerrit服务器会监听Git仓库的变更,并将这些变更存储在其内部的数据库中。
2. 代码审查:一旦代码推送到Gerrit上,审查人员将会收到通知。
他们可以通过浏览器登录到Gerrit界面,查看提交的变更。
审查人员可以对代码进行行级别的评论、提出问题和建议改进等。
他们还可以将其他开发人员邀请到代码审查中,以获取更多的意见和反馈。
3. 代码合并:一旦代码通过审查,审查人员可以将其合并到主分支中。
Gerrit使用了类似于Git的合并策略来合并代码变更。
合并后的代码将会出现在主分支中,并可供其他开发人员拉取和使用。
4. 反馈和讨论:Gerrit提供了一个集中的讨论平台,开发人员可以在每个代码审查中进行讨论和交流。
这意味着团队成员可以在提交代码之前解决问题,从而减少了错误和冲突。
5. 自动化流程:Gerrit支持一些自动化流程,例如自动化构建和部署。
通过与其他工具和持续集成/部署系统的集成,可以实现自动构建、测试和部署代码。
这些自动化流程可以帮助团队更好地管理代码的质量和可靠性。
总结来说,Gerrit的工作原理可以概括为:提交代码变更到Gerrit,邀请审查人员进行代码审查,处理审查人员的反馈和建议,合并代码到主分支,并通过讨论平台解决问题和提供反馈。
gerrit工作原理
gerrit工作原理
Gerrit工作原理如下:
1. Git仓库同步:Gerrit会按照所设定的时间间隔自动同步Git仓
库中的最新版本,确保审核过程中使用的是最新版本。
2. 评审提交:开发者将代码提交到Gerrit上后,管理员会分配一个
评审人员来审核这个提交。
评审人员可以看到所有与这个提交相关的信息,包括代码、注释、修改历史等等。
如果审核通过,提交会自动合并到Git
仓库中;如果审核不通过,提交者将需要修改代码以满足评审的要求。
3. 状态管理:Gerrit会自动跟踪每次提交的状态,包括已经审核的、已经合并的和等待审核的。
管理员可以在后台设置状态,以便更好地跟踪
整个审核过程。
4. 通知和报告:Gerrit对提交的审核过程进行全面的跟踪和记录,
并及时通知相关人员有可能会影响他们的事件。
管理员可以生成各种类型
的报告,以便监控和评估整个审核过程的性能和效果。
gerrit使用实例
gerrit使用实例摘要:1.Gerrit 简介2.Gerrit 的使用实例3.Gerrit 的优势与不足正文:1.Gerrit 简介Gerrit 是一款开源的代码审查工具,它基于Web 界面,并采用Git 作为代码仓库。
Gerrit 提供给开发者一个平台,可以在这个平台上审查别人的代码,也可以让别人审查自己的代码。
这种代码审查机制有助于提高代码的质量和安全性。
2.Gerrit 的使用实例在使用Gerrit 进行代码审查时,需要遵循以下步骤:(1)准备工作:首先,需要确保Git 代码仓库已经创建,并将其与Gerrit 服务器进行关联。
(2)提交代码:开发者需要将代码提交到Git 仓库中。
(3)代码审查:提交代码后,Gerrit 会自动将代码推送到服务器,并通知相关人员进行审查。
审查人员可以在Web 界面上进行代码审查,并在代码中添加注释,指出需要修改的地方。
(4)代码修改:开发者根据审查人员的注释,修改代码并重新提交。
(5)审查通过:如果审查人员认为代码已经符合要求,可以点击“通过”按钮,此时代码审查流程结束。
3.Gerrit 的优势与不足Gerrit 的优势主要体现在以下几个方面:(1)开源免费:Gerrit 是一款开源的代码审查工具,不需要支付任何费用,可以节省企业的运营成本。
(2)易于使用:Gerrit 的Web 界面设计简洁,易于上手。
(3)强大的代码审查功能:Gerrit 支持多种代码审查方式,包括基于线的代码审查、基于提交的代码审查等。
然而,Gerrit 也存在一些不足之处:(1)对网络环境的要求较高:Gerrit 需要连接到远程服务器进行代码审查,因此对网络环境的要求较高。
gerrit代码管理常用架构
gerrit代码管理常用架构Gerrit是一个基于Git版本控制系统的代码审查工具,广泛应用于软件开发团队中。
它提供了丰富的功能和灵活的架构,支持多种代码管理流程。
本文将介绍Gerrit常用的代码管理架构。
一、集中式代码管理架构集中式代码管理架构是Gerrit最早出现的一种架构形式。
在这种架构中,只有一个中央代码仓库,所有的开发人员都向该中央仓库推送代码变更。
代码审查发生在从中央仓库拉取代码到本地进行修改之前。
集中式代码管理架构具有以下优点:1. 管理简单:只有一个中央仓库需要维护,减少了管理成本。
2. 实时协作:开发人员可以实时查看和评审其他人的代码变更。
然而,集中式代码管理架构也存在一些缺点:1. 单点故障:由于只有一个中央仓库,一旦发生故障,整个团队的开发流程将受到阻碍。
2. 高并发冲突:多个开发人员同时推送代码变更时,可能引发冲突和合并问题。
二、分布式代码管理架构分布式代码管理架构是Gerrit的另一种常用架构形式,主要解决了集中式架构的缺点。
在分布式架构中,每个开发人员都有自己的本地仓库,他们可以在本地进行代码修改和提交。
代码审查的过程在开发人员推送代码变更到中央仓库之后进行。
分布式代码管理架构具有以下优点:1. 高可用性:每个开发人员都有自己的本地仓库,故障不会影响整个团队的开发流程。
2. 并行开发:开发人员可以在本地仓库独立进行代码修改,避免冲突和并发问题。
分布式代码管理架构也存在一些缺点:1. 初始设置复杂:由于每个开发人员都有自己的本地仓库,初次配置需要花费一定的时间和精力。
2. 多个仓库同步问题:开发人员之间的本地仓库需要进行同步,避免代码冲突。
三、混合式代码管理架构混合式代码管理架构结合了集中式和分布式架构的优点,并可以根据具体需求进行灵活配置。
在混合式架构中,通常会有一个中央仓库和多个开发人员的本地仓库,代码审查的过程可以在本地仓库之后或者推送至中央仓库之前进行。
混合式代码管理架构的优点:1. 灵活性高:可以根据团队需要配置不同的代码管理流程。
使用gerrit进行codereview
使用gerrit进行codereview安装好Gerrit服务器后,我们需要配置Gerrit的认证方式。
Gerrit支持多种认证方式,如基于LDAP的用户认证、OpenID和OAuth等。
我们可以根据团队的需求选择最适合的认证方式。
接下来,我们需要设置Gerrit的项目仓库。
Gerrit使用Git作为版本控制系统,我们可以在Gerrit服务器上创建新的Git仓库或者导入已有的Git仓库。
在项目仓库设置好后,我们需要配置Gerrit的权限控制。
Gerrit提供了丰富的权限控制功能,可以根据用户或用户组设置不同的权限。
例如,我们可以设置只有指定的团队成员才能进行代码审查、合并代码等操作。
接下来,我们可以使用Gerrit提供的Web界面或Git命令行工具来上传和提交代码。
当我们上传代码到Gerrit服务器时,Gerrit会自动检测到新的提交并创建一个新的代码评审请求(change request)。
在代码评审请求创建后,团队成员可以对代码进行评审并提供反馈。
Gerrit提供了丰富的代码比较和注释功能,团队成员可以在线上对代码进行评论和讨论。
同时,Gerrit还可以根据代码评审结果自动进行代码签名、合并等操作。
在代码评审过程中,我们可以使用Gerrit提供的过滤和排序功能,快速查找和处理未解决的代码评审请求。
同时,Gerrit还提供了可视化的统计和报告功能,可以帮助团队成员监控和管理代码评审的进度。
当代码评审完成后,Gerrit可以自动将代码合并到主分支或指定的其他分支。
同时,我们还可以通过Web界面或Git命令行工具查看和管理已合并的代码。
git、gerrit的使用方法和规范方案
git、gerrit的使用方法和规范1、新员工git安装环境准备首先从服务器端ftp://192.168.31.10/Software/Tool/Git/(用户名/密码 paypalm/paypalms)获取软件Git-1.9.4-preview20140929 1、默认安装Git-1.9.4-preview20140929安装完成后打开git bash编辑器生成密钥对:ssh-keygen -t rsa 按三次回车键,默认生成路径如下图将生成的公钥内容在gerrit中进行添加(参考下文gerrit注册使用)每个人不同环境可以添加多个对应的公钥cat ~/.ssh/id_rsa.pub2、gerrit注册使用1、申请账号通过邮件向PPCM@发邮件申请,打开gerrit网站(http://192.168.31.10:8088),登录后在右上角进行setting设置2、公钥添加点击SSH Public Keys》Add Key选项进行公钥添加3、邮箱注册点击Register New Email 进行邮箱注册,注册后有邮件发送至你的邮箱点开链接重新登录3、gerrit主要功能介绍1、常规功能1、登录gerrit》ALL》open状态,此显示为已推送但还没有入库的所有patch,CR状态栏中绿色对勾代表已评审状态,可以根据计划入库2、gerrit》ALL》Merged状态表示所有已经进入项目库的patch3、提交patch后,开发人员可能觉得不太满意会选择放弃,gerrit》ALL》Abandoned 即为已放弃的patch,只有还没有入库的patch才能选择放弃,点击进入patch,橘黄色Abandon即为放弃选项,放弃后的patch依然可以进行还原,如以下操作橘黄色Restore为还原选项4、gerrit》Projects》List状态表示服务器端所有项目列表5、gerrit》People》List Groups状态表示所有组列表2、评审功能1、点击进入待评审的patch,点击add添加Reviews人员进行评审评审人员点击Reply进行评审打分,每一个需要入库的patch必须具备两分+2方可,1分表示自己同意,2分表示完全同意,负分表示不支持此代码入库2、gerrit》My》Changes状态为需要自己给别人进行评审的状态4、git命令使用1、账户名和邮箱设置查看1)、每一个工作环境首先配置在gerrit中注册的账户名和邮箱,请确保一致# git config --global “your-account”# git config --global user.email “your-email”# git config -l2、项目库clone根据gerrit项目列表,查看项目下载地址,选择clone with commit-msg hook&&ssh 选项,请确保正确方式进行项目库下载git clone ssh://your-accout@192.168.31.10:29418/Test3、提交注意事项每一个新clone的库第一次提交都需要执行以下步骤(下载服务端钩子到本地库,以便提交评审形成chang-id)scp -p -P 29418 your-account-name @192.168.31.10:hooks/commit-msg .git/hooks/git config remote.origin.push refs/heads/*:refs/for/*当执行完以上步骤,第一次git push依然会产生missing Change-Id错误,用git commit --amend命令把错误信息中的changed id进行添加,如下图本地工作库中,以最后一次成功push为节点,如果超过两条commit信息也会产生此错误合并多条commit为一条记录,可以用git reset 后跟要回退到最新push成功的版本号,整合多条记录为一条如产生uppack error和changed closed,建议保存工作库中修改文件,并进行强制回退、重新同步最新代码,以修复工作库index。
git+gerrit的使用手册及小技巧
1文档版本管理2GIT代码管理2.1MYSYSGIT安装2.1.1软件获取svn://192.168.1.203/project/doc/1.过程库/4.软件管理/1、版本管理软件2.1.2软件安装本地直接双击安装,一直下一步即可。
2.2G IT基本使用2.2.1登录gerrit系统获取项目克隆地址✧Gerrit地址:http://192.168.1.203/✧用户/密码:向管理员申请✧克隆地址:登录gerrit后,按照如下操作,Projects—>List—>选择克隆的项目—>点击SSH后即可发现克隆地址,见下图2.2.2项目获取方法✧登录mysysgit后生成本地ssh-key✧登录gerrit系统,按照顺序操作,Anonymous Coward —>setting—>SSHPublic Keys,复制本地公钥文件内容(一般会在生成的时候告诉路径,通常在C:\Users\baiyc\.ssh),粘贴到文档框中,添加即可✧根据上面获得克隆地址,在本地选好存放项目的路径后,在mysysgit中执行克隆即可,mysysgit中一些基本命令说明:⏹命令基本与linux命令一致⏹不一致的命令有:◆切换目录:cd /d2.2.3Git 基本操作命令git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看本地所有分支git commit -am "init" 提交并且加注释git remote add origin git@192.168.1.119:ndshowgit push origin master 将文件给推到服务器上git remote show origin 显示远程库origin里的资源git push origin master:developgit push origin master:hb-dev 将本地库与服务器上的库进行关联git checkout --track origin/dev 切换到远程dev分支git branch -D master develop 删除本地库developgit checkout -b dev 建立一个新的本地分支devgit merge origin/dev 将分支dev与当前分支进行合并git checkout dev 切换到本地dev分支git remote show 查看远程库git add .gitrm 文件名(包括路径) 从git中删除指定文件git clone git:///schacon/grit.git 从服务器上将代码给拉下来gitconfig --list 看所有用户git ls-files 看已经被提交的gitrm [file name] 删除一个文件git commit -a 提交当前repos的所有的改变git add [file name] 添加一个文件到git indexgit commit -v 当你用-v参数的时候可以看commit的差异git commit -m "This is the message describing the commit" 添加commit信息git commit -a -a是代表add,把所有的change加到git index里然后再commitgit commit -a -v 一般提交命令git log 看你commit的日志git diff 查看尚未暂存的更新gitrma.a 移除文件(从暂存区和工作区中删除)gitrm --cached a.a 移除文件(只从暂存区中删除)git commit -m "remove" 移除文件(从Git中删除)gitrm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)git diff --cached 或 $ git diff --staged 查看尚未提交的更新git stash push 将文件给push到一个临时空间中git stash pop 将文件从临时空间pop下来2.3GIT日常基本操作流程(举例)前提条件:✧在192.168.1.203 上通过gerrit已经建立一个TestGit项目(管理员操作)✧已经增加完成ssh-key(个人操作)✧设置完成用户和邮件信息(个人操作)⏹gitconfig --global "baiyunheng"⏹gitconfig --global user.email 350200139@⏹在gerrit系统中管理已经设置完成(管理员操作)2.3.1克隆项目(一)git clone ssh://baiyunheng@192.168.1.203:29418/TestGit2.3.2本地库的操作(二)✧新建里一个文件mkdirtestprojectcdtestprojectvi 1.txt✧gitadd命令cd ..git add .✧git commit命令git commit . –m “test1”说明:在以上操作完成或者之间可以使用一些查看命令⏹git status⏹git log⏹gitreflog2.3.3提交主库审核✧gitpush命令git push origin master:refs/for/master说明:第一次会报错,解决方法如下(也可以在push前执行)scp -P 29418 baiyunheng@192.168.1.203:hooks/commit-msg .git/hooks/ git commit --amend✧git pull命令git pull 拉去最新的程序2.3.4在gerrit设定审批人员✧登录gerrithttp://192.168.1.203/✧设定review人员My----》Changes 后选择你需要review的文件单击添加人员账号(例如:admin)点击Add Reviewer2.3.5Gerrit审核通过或拒绝✧在选择-2表示拒绝✧在选择+2表示通过2.3.6拒绝处理✧对源文件修改✧再提交⏹git add 1.txt⏹git commit 1.txt --amend ##一定要用amend ,为保证✧然后进行push⏹git push origin master:refs/for/master说明:一直到review通过为止,或者放弃本次修改3J ENKINS项目构建及部署访问地址:http://192.168.1.203:8081/jenkins/(如果要增加用户需要请联系管理员或者自己进行注册)使用的方法请参考例子:4其他小技巧4.1.GITIGNORE✧作用:忽略不需要提交的文件或文件夹✧具体方法如下:gitconfig --global core.excludesfile ~/.gitignore ##指定.gitignore的位置.gitignore内容可参考SVNsvn://192.168.1.203/project/doc/1.过程库/3.成果文档/1.版本管理/.gitignore内容# 忽略*.class*.class# 忽略 classes/ 目录下的所有文件classes/4.2自动添加REVIEWERA.痛苦的做法:1.git push origin HEAD:refs/for/master2. 在gerrit管理网站,每个commit一个设置reviewer.B.直接命令里面设置git push origin HEAD:refs/for/master%r=fanxu.china@其中, %r 指定了code reviewer 但这么长的一串,每次push都来上这么一次,也挺痛苦的。
Git与Gerrit的区别
Git与Gerrit的区别
之前刚进公司项⽬还在⽤CVS,后⾯转为git进⾏代码管理,最近为提⾼代码⼊库质量,引⼊gerrit进⾏代码管理。
那有什么关系与区别呢?
Git
简单来说,Git是⼀个开源的分布式版本控制系统,⽤以有效、⾼速的处理从很⼩到⾮常⼤的项⽬版本管理
Git 是分布式版本控制系统,那么它就没有中央服务器的,每个⼈的电脑就是⼀个完整的版本库,这样,⼯作的时候就不需要联⽹了,因为版本都是在⾃⼰的电脑上。
既然每个⼈的电脑都有⼀个完整的版本库,那多个⼈如何协作呢?⽐如说⾃⼰在电脑上改了⽂件A,其他⼈也在电脑上改了⽂件A,这时,你们两之间只需把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了。
Gerrit
简单来说,Gerrit是⼀个建⽴在Git版本控制基础之上,基于Web的代码审查⼯具。
Gerrit是⼀种免费、开放源代码的代码审查软件,使⽤⽹页界⾯。
利⽤⽹页浏览器,同⼀个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。
Gerrit适⽤性:⼏乎任何需要正式发布的项⽬都应当使⽤Gerrit来进⾏代码审查,如果Team中有新⼈,必须使⽤Gerrit确保代码质量。
Verify:⼯程⾥⾯接⼊了jenkins⾃动verify,结果可在上图红框内展⽰verify结果。
gerrit使用介绍
gerrit使⽤介绍Gerrit使⽤介绍1.进⼊gerrit打开浏览器输⼊:http://172.16.16.15:8080(MTK)或者http://172.16.16.121:8080(⾼通),点击右上⾓的sign in,输⼊⽤户名密码之后即可登录。
2.查看提交进⼊之后可以看到左边有,All可以看到所有的提交,My可以查看⾃⼰的提交,projects可以查看所有的project。
点击All之后有Open(所有的暂未review的提交),Merge(已经review的提交),Abandoned(已经丢弃的提交)。
3.Review代码点击需要review的那笔提交,左边可以看到commit的所有信息点击右边的Reply按钮可以跳出如下界⾯,-2表⽰不通过,-1代表的是不建议提交,+1表⽰还需要其他⼈review,+2表⽰通过,需要对应的数字点击post,review即可完成。
4.解决Merge Conflict如果提交代码的时候未及时更新最新的代码,则提交代码之后gerrit上会显⽰此笔提交的状态为merge conflict,解决⽅法只需在右边的按钮中点击Rebase。
5.Cherry-pick到其他分⽀提交Review完之后可以使⽤CherryPick按钮,把这笔提交cherry-pick到其他分⽀。
注意事项请务必按照<>先配置⾃⼰的账号信息。
1.如需leader review代码,请在⾃⼰review的时候选择+1,然后通知相关⼈员review。
2.请务必按照提交的时间顺序⼀个⼀个review。
3.禁⽌提交了之后不及时review。
4.如需提交⽐较⼤的代码时,⽐如GMS包,请直接与SCM联系,申请暂时的直接推送权限。
gerrit安装指南
gerrit安装指南Gerrit的基本介绍Gerrit 是⼀个Git服务器,它基于 git 版本控制系统,使⽤⽹页界⾯来进⾏审阅⼯作。
Gerrit 旨在提供⼀个轻量级框架,⽤于在代码⼊库之前对每个提交进⾏审阅,更改将上载到 Gerrit,但实际上并不成为项⽬的⼀部分,直到它们被审阅和接受。
代码审查是Gerrit的核⼼功能,但仍是可选的,团队可以决定不进⾏代码审查⽽⼯作。
Gerrit 是⼀个临时区域, 在提交的代码成为代码库的⼀部分之前, 可以对其修改进⾏检查。
代码修改的作者将提交作为对 Gerrit 的更改。
在Gerrit中,每个更改都存储在暂存区域中,可以在其中进⾏检查和查看。
仅当它被批准并提交时,它才被应⽤到代码库中。
其实,Gerrit 就相当于是在开发员将本地修改提交到代码仓库之前的⼀个审核⼯具。
在这个审核⼯具中,你可以查看该提交者在本次的的提交中的修改,然后再决定是否可以将该修改提交给仓库。
1. 前期准备1.1. Jdk安装上传jdk⽂件夹 cd /usr/local rz jdk-1.8.0_11添加环境变量vim /etc/profile 添加如下内容:JAVA_HOME根据实际⽬录来JAVA_HOME=/usr/local/jdk1.8.0_11CLASSPATH=$JAVA_HOME/lib/PATH=$PATH:$JAVA_HOME/binexport PATH JAVA_HOME CLASSPATH执⾏source /etc/profile刷新环境变量查看版本 java -version1.2. Git安装提⽰:建议不要⽤yum -y install git的⽅式安装git,这样安装的git版本过低,在与gerrit集成过程中可能会出问题,如果已经安装建议卸载重新安装1. 安装git依赖包:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker2. 新建 git⽬录,cd /usr/bin/;mkdir git3. 下载wget⼯具,已有的机器可以不⽤下载:yum -y install git4. 下载git安装包下载地址:wget https:///pub/software/scm/git/git-2.12.2.tar.gz5. 解压git,tar -xzvf **.tar.gz6. 进⼊解压⽬录安装git:make prefix=/usr/bin/git all make prefix=/usr/bin/git install7. 配置环境变量 vim /etc/profile,export PATH=/usr/bin/git/bin:$PATH,刷新环境变量让他⽣效 source /etc/profile ;8. 查看安装是否成功 git -version9. ⽣成秘钥:ssh-keygen,⼀直回车直到⽣成进⼊到秘钥界⾯将公钥拷贝给运维添加到gitlab上,cd /root/.ssh(还没有搭建gitlab的忽略)配置gitgit config --global "你的名字"git config --global user.email "你的邮箱"git config --global color.ui true 设置语法⾼亮1.3. Nginx安装1.3.1. 下载Nginx及相关组件Linux系统是Centos 6.5 64位,我直接切换到root⽤户下安装进⼊⽤户⽬录下载程序下载相关组件省略安装内容...省略安装内容...省略安装内容...安装c++编译环境,如已安装可略过[root@localhost src]# yum install gcc-c++省略安装内容...期间会有确认提⽰输⼊y回车Is this ok [y/N]:y省略安装内容...1.3.2. 安装Nginx及相关组件openssl安装:[root@localhost src]# tar zxvf openssl-fips-2.0.10.tar.gz省略安装内容...[root@localhost src]# cd openssl-fips-2.0.10[root@localhost openssl-fips-2.0.10]# ./config && make && make install省略安装内容...pcre安装[root@localhost src]# yum install pcre pcre-devel省略安装内容...zlib安装[root@localhost src]# tar zxvf zlib-1.2.11.tar.gz省略安装内容...[root@localhost src]# cd zlib-1.2.11[root@localhost zlib-1.2.11]# ./configure && make && make install省略安装内容...nginx安装[root@localhost src]# tar zxvf nginx-1.10.2.tar.gz省略安装内容...[root@localhost src]# cd nginx-1.10.2[root@localhost nginx-1.10.2]# ./configure && make && make install省略安装内容...1.3.3. 启动Nginx先找⼀下nginx安装到什么位置上了进⼊nginx⽬录并启动进⼊浏览器,输⼊服务器IP会看到下图,说明nginx启动成功1.4. htpasswd管理⼯具安装htpasswd是Apache的Web服务器内置的⼯具,⽤于创建和更新储存⽤户名和⽤户基本认证的密码⽂件。
gerrit使用git review提交
gerrit使用git review提交摘要:一、Gerrit简介二、Gerrit与Git的关联三、Git Review提交的使用四、总结正文:Gerrit是一个代码审查工具,它基于Web且与Git紧密结合,可以帮助开发团队更高效地进行代码审查和协作。
在Gerrit中,用户可以使用Git进行代码提交和版本控制,并通过Gerrit进行代码审查。
Gerrit与Git之间的关联非常紧密,因为Gerrit是基于Git实现的。
在Gerrit中,代码仓库分为两种:Gerrit项目和Git仓库。
Gerrit项目是一个特殊的Git仓库,它包含了Gerrit服务器上的所有代码审查信息。
当你向Gerrit 项目提交代码时,Gerrit会将你的提交信息与代码仓库关联起来,并将其提交到Gerrit服务器进行代码审查。
在Gerrit中,有两种提交方式:直接提交和使用Git Review提交。
直接提交是指直接使用Git命令行工具进行提交,这种方式适用于简单的代码提交。
而Git Review提交则是通过Gerrit Web界面进行的,它提供了更丰富的功能,如代码审查、合并等。
今天我们将重点介绍Gerrit中的Git Review提交。
使用Git Review提交时,首先需要在Gerrit Web界面上创建一个新提交。
在创建提交时,需要填写提交信息,如提交者、提交时间、提交注释等。
填写完毕后,点击“提交”按钮,Gerrit会将你的提交信息与代码仓库关联起来,并将其提交到Gerrit服务器进行代码审查。
在代码审查过程中,团队成员可以在Gerrit Web界面上查看代码、提交注释以及进行评论。
审查完成后,如果代码通过了审查,团队成员可以点击“合并”按钮,将代码合并到主分支。
如果代码未通过审查,团队成员可以在Gerrit Web界面上提出修改意见,开发人员根据意见进行修改并重新提交代码。
总之,Gerrit作为一款强大的代码审查工具,与Git紧密结合,提供了便捷的代码提交和管理功能。
gerrit的工作流程
gerrit的工作流程Gerrit的工作流程Gerrit是一个基于Git的代码审查工具,广泛应用于软件开发中。
它提供了一个便捷的方式来进行代码审查和团队协作,可以帮助开发者更好地管理和维护代码库。
本文将详细介绍Gerrit的工作流程,帮助读者了解和掌握如何使用这个强大的工具。
一、创建变更在使用Gerrit进行代码审查之前,首先需要创建一个变更。
变更是指对代码库进行的一次修改,可以是新增、修改或删除文件。
开发者可以通过Git命令来创建一个变更,并提交到Gerrit服务器上。
二、上传变更一旦创建了变更,开发者就可以将其上传到Gerrit服务器上进行审查。
上传变更的方式有多种,可以通过命令行工具,也可以通过Gerrit提供的Web界面来完成。
上传变更后,Gerrit会为每个变更生成一个唯一的变更号,并将其显示在变更列表中。
三、代码审查上传变更后,团队成员可以对其进行代码审查。
代码审查是指对代码进行仔细的检查和评估,以确保代码的质量和可维护性。
在Gerrit中,代码审查是通过评论的方式进行的。
团队成员可以在代码的每个行或者代码块上添加评论,提出问题或者给出建议。
这些评论可以帮助开发者改进代码,并最终达到更好的代码质量。
四、处理反馈一旦团队成员对变更提出了评论,开发者就可以根据这些反馈来进行代码的修改。
开发者可以根据评论的内容,对代码进行相应的调整和改进,以满足审查人员的要求。
在Gerrit中,开发者可以通过提交新的变更来响应审查人员的反馈,也可以在原有的变更上进行修改并重新上传。
五、重新审查在开发者对变更进行了修改后,团队成员需要重新审查代码。
他们可以查看开发者对评论的回复,并对修改后的代码进行再次评估。
如果团队成员对修改后的代码满意,他们可以在Gerrit中进行代码的提交。
如果还存在问题或者建议,他们可以继续提出评论,直到代码完全符合要求为止。
六、合并变更当团队成员对变更进行了最终的审查,并认为代码符合要求时,可以将其合并到主代码库中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第32章Gerrit 代码审核服务器谷歌 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本库协同而引入的repo,这在前面第25章已经详细讨论过。
另外一个重要的创新就是 Gerrit ——代码审核服务器。
Gerrit 为 Git 引入的代码审核是强制性的,也就是说除非特别的授权设置,向 Git 版本库的推送必须要经过 Gerrit 服务器,修订必须经过代码审核的一套工作流之后,才可能经批准并纳入正式代码库中。
首先贡献者的代码通过 git 命令(或 repo 封装)推送到 Gerrit 管理下的 Git 版本库,推送的提交转化为一个一个的代码审核任务,审核任务可以通过refs/changes/下的引用访问到。
代码审核者可以通过 Web 界面查看审核任务、代码变更,通过 Web 界面做出通过代码审核或打回等决定。
测试者也可以通过refs/changes/之下的引用获取修订然后对其进行测试,如果测试通过就可以将该评审任务设置为校验通过(verified)。
最后经过了审核和校验的修订可以通过Gerrit 界面中的提交动作合并到版本库对应的分支中。
Android 项目网站上有一个代码贡献流程图1,详细地介绍了 Gerrit 代码审核服务器的工作流程。
翻译后的工作流程图见图32-1。
1 /source/life-of-a-patch.html图32-1:Gerrit 代码审核工作流32.1Gerrit 的实现原理Gerrit 更准确地说应该称为 Gerrit2。
因为 Android 项目最早使用的评审服务器 Gerrit 不是今天这个样子的。
最早版本的 Gerrit 是用 Python 开发运行于 Google App Engine 上的,从 Python 之父 Guido van Rossum 开发的 Rietveld 分支而来。
在这里要讨论的 Gerrit 实为 Gerrit2,是用Java 语言实现的1。
1.SSH 协议的 Git 服务器Gerrit 本身基于 SSH 协议实现了一套 Git 服务器,这样就可以对 Git 数据推送进行更为精确的控制,为强制审核的实现建立了基础。
Gerrit 提供的 Git 服务的端口并非标准的 22 端口,默认是 29418 端口。
这个端口是可以被发现的,当访问 Gerrit 的 Web 界面时可以得到这个端口。
对 Android 项目的代码审核服务器,访问https:///ssh_info就可以查看到 Git 服务的服务器域名和开放的端口。
下面用 curl 命令查看网页的输出。
$ curl -L -k /ssh_info 294182.特殊引用 refs/for 和 refs/changesGerrit 的 Git 服务器,禁止用户向refs/heads命名空间下的引用执行推送(除非特别的授权),即不允许用户直接向分支进行提交。
为了让开发者能够向 Git 服务器提交修订,Gerrit 的Git 服务器只允许用户向特殊的引用refs/for/<branch-name>下执行推送,其中<branch-name>即为开发者的工作分支。
向refs/for/<branch-name>命名空间下推送并不会在其中创建引用,而是为新的提交分配一个 ID,称为 review-id ,并为该 review-id 的访问建立如下格式的引用refs/changes/nn/<review-id>/m,其中:review-id 是 Gerrit 为评审任务顺序而分配的全局唯一的号码。
nn 为 review-id 的后两位数,位数不足用零补齐。
即 nn 为 review-id 除以 100 的余数。
m 为修订号,该 review-id 的首次提交修订号为1,如果该修订被打回,重新提交修订号会自增。
1 /p/gerrit/wiki/Background3.Git 库的钩子脚本 hooks/commit-msg为了保证已经提交审核的修订通过审核入库后,如果被别的分支拣选(cherry-pick)后再推送至服务器时不会产生新的重复的评审任务,Gerrit 设计了一套特殊的方法,即要求每个提交在提交说明中包含 Change-Id 键值对作为标签,该标签在首次生成时使用特殊的哈希算法以保障其唯一性。
执行拣选操作时,提交说明会被保持,即来自原始提交说明中的 Change-Id键值对也会保持不变,这样当新提交推送到 Gerrit 服务器时,Gerrit 会发现新的提交包含了已经处理过的Change-Id ,就不再为该修订创建新的评审任务和 review-id,而直接将提交入库。
为了使得 Git 提交中包含唯一的 Change-Id,Gerrit 提供了一个钩子脚本,将该脚本拷贝到开发者的本地 Git 库的钩子脚本目录中,即脚本文件.git/hooks/commit-msg。
这个钩子脚本在用户提交时,自动在提交说明中创建 Change-Id 键值对。
至于如何实现 Change-Id 值的唯一性,可以参考该脚本。
当 Gerrit 获取到用户向refs/for/<branch-name>推送的提交中包含“Change-Id: I...”的格式时,如果该 Change-Id 之前没有见过,会创建一个新的评审任务并分配新的 review-id,并在 Gerrit 的数据库中保存 Change-Id 和 review-id 的关联。
如果用户的提交因为某种原因被打回重做,开发者修改之后重新推送到 Gerrit 时就要注意在提交说明中使用相同的 Change-Id (使用 --amend 提交即可保持提交说明),以免创建新的评审任务。
还要在推送时将当前分支推送到refs/changes/<nn>/<review-id>/<m>中,是为该评审任务的一个新的修订,其中<nn>和<review-id>和之前提交的评审任务的修订号相同,<m>则要人工选择一个新的修订号。
以上说起来很复杂,但是在实际操作中只要使用 repo 这一工具,就相对容易多了。
4.其余一切交给 WebGerrit 另外一个重要的组件就是 Web 服务器,通过 Web 服务器实现对整个评审工作流的控制。
关于 Gerrit 工作流,请参见本章开头出现的 Gerrit 工作流程图。
想要感受一下 Gerrit 的魅力?请直接访问 Android 项目的 Gerrit 网站:https:///,您会看到如图32-2的界面。
图32-2:Android 项目代码审核网站点击菜单中的“Merged”即可显示已经通过评审且合并到代码库中的审核任务。
图32-3中显示的就是 Andorid 一个已经合并到代码库中的历史评审任务。
图32-3:Android 项目的 16993 号评审从图32-3中可以看出:URL 中显示的评审任务编号为 16993。
该评审任务的 Change-Id 以字母 I 开头,包含了一个唯一的 40 位 SHA1 哈希值。
整个评审任务有三个人参与,一个人进行了检查(verify),两个人进行了代码审核。
该评审任务的状态为已合并:“merged”。
该评审任务总共包含两个补丁集: Patch set 1 和Patch set 2。
补丁集的下载方法是:repo download platform/sdk 16993/2。
如果使用 repo 命令获取补丁集是非常方便的,因为封装后的 repo 屏蔽掉了 Gerrit 的一些实现细节,例如补丁集在 Git 库中的存在位置。
如前所述,补丁集实际保存在refs/changes命名空间下。
使用git ls-remote命令,从 Gerrit 维护的代码库中可以看到补丁集对应的引用名称。
$ git ls-remote \ssh://:29418/platform/sdk \refs/changes/93/16993*5fb1e79b01166f5192f11c5f509cf51f06ab023d refs/changes/93/16993/1d342ef5b41f07c0202bc26e2bfff745b7c86d5a7 refs/changes/93/16993/2 接下来就来介绍一下 Gerrit 服务器的部署和使用方法。
32.2架设 Gerrit 的服务器1.下载 war 包Gerrit 是由 Java 开发的,被封装为一个 war 包:gerrit.war ,安装非常简洁。
如果需要从源码编译出 war 包,可以参照相关文档1。
不过最简单的就是从 Google Code 上直接下载编译好的war 包。
从下面的地址下载 Gerrit 的 war 包:/p/gerrit/downloads/list。
在下载页面会有一个文件名类似Gerrit-x.x.x.war 的 war 包,这个文件就是 Gerrit 的全部。
示例中使用的是 2.1.5.1 版本,把下载的 Gerrit-2.1.5.1.war 包重命名为 Gerrit.war 。
下面的介绍就是基于这个版本。
2.数据库选择Gerrit 需要数据库来维护账户信息、跟踪评审任务等。
目前支持的数据库类型有 PostgreSQL、1/svn/documentation/2.1.5/dev-readme.htmlMySQL 及嵌入式的 H2 数据库。
选择使用默认的 H2 内置数据库是最简单的,因为这样无须任何设置。
如果想使用更为熟悉的 PostgreSQL 或 MySQL,则需要预先建立数据库。
对于 PostgreSQL,在数据库中创建一个用户 gerrit,并创建一个数据库 reviewdb。
createuser -A -D -P -E gerritcreatedb -E UTF-8 -O gerrit reviewdb对于 MySQL,在数据库中创建一个用户 gerrit 并为其设置口令(不要真如下面那样将口令设置为“secret”),并创建一个数据库 reviewdb。
$ mysql -u root -pmysql> CREATE USER 'gerrit'@'localhost' IDENTIFIED BY 'secret';mysql> CREATE DATABASE reviewdb;mysql> ALTER DATABASE reviewdb charset=latin1;mysql> GRANT ALL ON reviewdb.* TO 'gerrit'@'localhost';mysql> FLUSH PRIVILEGES;3.以一个专用用户帐号执行安装在系统中创建一个专用的用户帐号如:gerrit。