Gerrit、repo的使用

Gerrit、repo的使用一 引言 Gerrit 一种免费 开放源代码的代码审查软件 使用网页界面

大家好,欢迎来到IT知识分享网。

一、引言

Gerrit,一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。

repo是Google开发的用于管理Android版本库的一个工具,repo是使用Python对git进行了一定的封装,并不是用于取代git,它简化了对多个Git版本库的管理。用repo管理的版本库都需要使用git命令来进行操作。

二、Gerrit的用户添加

1、账号密码

2、修改名字和邮箱

在这里插入图片描述
如邮箱为xxxx@google.com,则“Full Name”填写为xxxx:
在这里插入图片描述
注册邮箱:
注册成功后会给邮箱发送一封邮件,点击链接进行验证



3、linux下添加用户

linux下的用户名须和管理员给的Gerrit账号名相同,如果没有,请添加新用户:

git config --global user.name "xxxxx"(名字需要修改) git config --global user.email ""(修改邮箱) 
添加密钥
ssh-keygen -t rsa -C "自己邮箱地址" 一直按回车键即可 
~/.ssh/id_rsa.pub 

三、使用repo拉取Android源码

1、repo管理文件

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仓库中的一个特殊分支

完成repo工具的完整下载,执行的repo脚本只是引导程序
clone清单库manifest.git (地址是-u后面的参数)
clone的清单库位于manifest.git中,clone到本地.repo/manifest中,.repo/manifest.xml只是符号链接,它指向的是.repo/manifests/default.xml

同步代码(repo sync)

执行了repo init 命令后,我们需要执行如下命令同步代码:

repo sync -j : 多任务,一般8核心可以开到16任务,过多会起反作用 -c: 只下载当前分支代码 -d: 让工程回退到manifest指定的版本 -f: 如果某个工程同步失败,继续同步 

参照清单文件.repo/manifest.xml克隆并同步版本库。如果项目版本库不存在,则执行repo sync命令相当于执行git clone;如果项目版本库存在,则相当于执行下面两条指令:

切换分支(repo start)
repo start --all branch_name 

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 
强制同步远端服务器的代码

使用 repo sync 命令来同步远端服务器的 Android 代码,如果本地修改了代码但还没有 commit,会提示无法 sync:

error: android/frameworks/base/: contains uncommitted changes 

此时可以用过以下办法来强制同步代码

1、放弃本地某一git目录的修改,同步远程代码库

  1. 使用git reset 命令丢弃本地修改
  2. 然后再执行 repo sync 来同步代码

2、不丢失本地修改,强制同步远端服务器代码

repo sync -d 

3、强制让项目回滚整个项目到当前最新版本

repo forall -vc "git reset --hard" 

如果执行完成后,依旧提示某个目录有改动,则切换到有问题的目录,继续执行

git reset --hard 

完成后,删除所有没有增加到Git中的文件即可。

如果以上办法都不行,可以尝试下面这个命令
4、repo 回退当前所有的修改,和服务器上代码拉下来一样

repo forall -c "git clean -df" && repo forall -c "git checkout ." && repo sync -j8 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126543.html

(0)
上一篇 2025-09-17 21:00
下一篇 2025-09-17 21:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信