25.9 好东西不能Android独享

通过前面的介绍能够体会到repo的精巧——repo巧妙地实现了多Git版本库的管理。因为repo使用了清单版本库,所以repo这一工具并没有被局限于Android项目,可以在任何项目中使用。下面就介绍三种repo的使用模式,将repo引入自己的项目(非Android项目)中,其中第三种repo使用模式是用我改造后的repo,实现了脱离Gerrit服务器进行推送。

25.9.1 repo+Gerrit模式

repo和Gerrit是Android代码管理的两大支柱。正如前面在repo工作流中介绍的,部分的repo命令从Git服务器读取,这个Git服务器可以是只读的版本库控制服务器,还有部分repo命令(repo upload、repo download)访问的则是代码审核服务器,其中repo upload命令还要向代码审核服务器进行git push操作。

在使用未经改动的repo来维护自己的项目(多个版本库组成)时,必须搭建Gerrit代码审核服务器。

搭建项目的版本控制系统环境的一般方法为:

用Git协议或HTTP协议搭建Git服务器。具体搭建方法参见第5篇“搭建Git服务器”的相关章节。

导入repo.git工具库。非必须,只是为了减少不必要的互联网操作。

还可以在内部HTTP服务器维护一个定制的repo引导脚本,非必须。

建立Gerrit代码审核服务器。会在第5篇“第32章Gerrit代码审核服务器”中介绍Gerrit的安装和使用。

一一创建相关的子项目代码库。

建立一个manifest.git清单库,其中remote元素的fetch属性指向只读Git服务器地址,review属性指向代码审核服务器地址。示例如下:


<?xml version="1.0" encoding="UTF-8"?>

<manifest>

<remote name="example"

fetch="git://git.example.net/"

review="review.example.net"/>

<default revision="master"

remote="example"/>