Skip to main content
 首页 » 编程设计

C语言Gerrit使用技巧

2022年07月19日141insus

一、Gerrit过滤方法

1.查看某个文件已经merge的提交记录

file:autosleep.c status:merged

2.查看某个人已经merge的提交记录

owner:"my_name<my_email>" status:merged,还有branch: file:来查分支和文件的提交记录。

二、Gerrit操作

1. repo工程拉单个版本库的方法
$ cat ./repo/projects/android/kernel/configs.git/config
[remote "origin"]
url = ssh://xxxxxxxxxx/kernel/configs
review = http://gerrit.xxxxxxx

$ git clone ssh://xxxxxxxxxx/kernel/configs

2. Gerrit本地提交方法
格式:git push origin HEAD:refs/for/分支名 前提条件是本地也需要处于同一分支中

3. 代码审核失败后,重新提交时必须使用 git commit --amend,否则会生成新的评审任务,无法与上一次审核任务关联。
测试git commit --amend的重新提交的虽然commit hash会变,但是Change-Id是不会变的。

4. 点击左上方的菜单栏Projects->List,就能看到gerrit仓库里面所有的项目,排在最前的两个默认项目All-Projects和 All-Users,这两个工程是两个基础的工程,我们后期新建的所有项目默认都是继承
自ALL-Projects的权限。

5.使用Gerrit拉单个仓库代码的方法

git clone ssh://<your name>@gerrit.codebase.scm.adc.com:29411/sba_patches -b private_LA.UM.8.12_20200924221525 
git clone ssh://<your name>@gerrit.scm.adc.com:29411/<project path name> -b <branch name>

6. Gerrit上下载的.diff格式的补丁可以直接使用git apply进行打,不需要使用patch命令打补丁。

7. Gerrit提交冲突了,使用 git pull --rebase 后,重新提交。 

8. 只拉单个仓库的代码

git clone ssh://<your_gerrit_name>@<服务器仓库>:29418/<仓库名> -b <分支名>

9. git commit --amend 删除change id后重新提交,会产生新的Gerrit链接

10. 可以随便git cp一笔,然后进行全面更改,然后提交,这样change id是一样的,可以规避一些通过change id进行check的检查项。

11. 只要重新提交(reset后cp)时不要改Change-Id,重新提交生成的Gerrit链接地址就不会变。

12. git commit --amend 删除 Change-Id 后重新提交,会产生新的 Gerrit 链接。

13. 可以随便git cp一笔,然后进行全面更改,然后提交,这样 Change-Id 是一样的,可以规避一些基于 Change-Id 进行check的检查项。

三、Gerrit 加key

没有key报错如下:

$ git clone ssh://xiaoming@192.168.10.112:29418/perfermance 
Cloning into 'perfermance'... 
Permission denied (publickey). 
fatal: Could not read from remote repository. 
 
Please make sure you have the correct access rights and the repository exists.

表示没有对 192.168.10.112 这个服务器加 public key。

加 key 方法:

(1) 浏览器打开 http://192.168.10.112:8080,然后在左上角自己名字下面点击 setting --> "SSH Public Keys" --> Add Key。
(2) $ cat ~/.ssh/id_rsa.pub 将打印出来的内容添加到上一步骤的 Add Key 框里,点击add,之后就有权限clone代码了。

其中 29418 是默认的 Gerrit ssh 端口,而 8080 是默认的 Gerrit Web 端口。


本文参考链接:https://www.cnblogs.com/hellokitty2/p/12417256.html