一、引言
Gerrit,一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。
repo是Google开发的用于管理Android版本库的一个工具,repo是使用Python对git进行了一定的封装,并不是用于取代git,它简化了对多个Git版本库的管理。用repo管理的版本库都需要使用git命令来进行操作。
二、Gerrit的用户添加
1、账号密码
注册Gerrit需给Gerrit管理员发送邮件获取账号密码。
获取账号、密码、IP后登录对应仓库页面
2、修改名字和邮箱
如邮箱为xxxx@google.com,则“Full Name”填写为xxxx:
注册邮箱:
注册成功后会给邮箱发送一封邮件,点击链接进行验证
3、linux下添加用户
linux下的用户名须和管理员给的Gerrit账号名相同,如果没有,请添加新用户:
git config --global user.name "xxxxx"(名字需要修改)
git config --global user.email "xxxxx@xxx.com.cn"(修改邮箱)
添加密钥
ssh-keygen -t rsa -C "自己邮箱地址"
一直按回车键即可
出现如下图 则为成功添加密钥
然后公钥添加到Gerrit:
复制如下文件中的公钥
~/.ssh/id_rsa.pub
至
即添加成功
三、使用repo拉取Android源码
1、repo管理文件
1、使用 “repo init"拉取
2、使用"ls -a” 查看隐藏文件,该目录下会出现一个.repo文件夹,说明该目录存放的项目是一个用repo管理的版本库
3、进入到.repo,并查看目录内容,可以看到.repo目录下有manifest、project、repo文件夹等信息。
4、如果想查看Python封装的脚本,可到.repo/repo
5、如果想查看某个模块当前是在哪个分支,可以进入到manifests中去:
2、repo常用命令
解析拉取代码的命令
repo init -u ssh://ppgerrit.com/Mstar648/manifest.git -b 648_cultraview -m ppos4.5.0_cultraview.xml
其中:
-u:指定一个URL,其连接到一个manifest仓库
-b:选择manifest仓库中的一个特殊分支
-m:在manifest仓库中选择一个xml文件
repo init要完成如下操作:
完成repo工具的完整下载,执行的repo脚本只是引导程序
clone清单库manifest.git (地址是-u后面的参数)
clone的清单库位于manifest.git中,clone到本地.repo/manifest中,.repo/manifest.xml只是符号链接,它指向的是.repo/manifests/default.xml
如果manifest中有多个xml文件,repo init可以任意选择其中一个,默认选择的是default.xml。
上面的拉取代码示例选择的是ppos4.5.0_cultraview.xml里面的配置,那么.repo/manifest.xml指向的是.repo/manifests/ppos4.5.0_cultraview.xml
同步代码(repo sync)
执行了repo init 命令后,我们需要执行如下命令同步代码:
repo sync
参照清单文件.repo/manifest.xml克隆并同步版本库。如果项目版本库不存在,则执行repo sync命令相当于执行git clone;如果项目版本库存在,则相当于执行下面两条指令:
git remote update
相当于对每一个remote源执行了fetch操作
git rebase origin/branch
对当前分支的跟踪分支执行rebase操作
切换分支(repo start)
刚clone下来的代码是没有分支的
repo start 的实质就是对git checkout -b 的封装,可以为单个项目或所有项目以清单文件中已设定的分支为基础,在本地创建新的分支。
repo start 与 git checkout -b 的区别:
repo start:是在清单文件设定的分支基础上创建新的分支
git checkout -b: 是在当前所在分支的基础上创建新的分支
查看分支(repo branches)
repo branches
切换分支(repo checkout)
repo checkout brancnName
查看工作区文件的差异(repo diff)
repo diff
查看文件状态(repo status)
该命令实际上是对git diff-index 和git diff-filse命令的封装,同时显示暂存区的状态和本地文件修改的状态
repo status
删除指定分支(repo abandon)
repo abandon branchName
删除已经合并分支(repo prune)
该命令实质是对git branch -d的封装,用于扫描项目的各个分支,并删除已经合并的分支,语法如下:
repo prune
来源:CSDN
作者:文艺小少年
链接:https://blog.csdn.net/weixin_38019025/article/details/104117607