Gerrit使用总结

作者: 奔跑吧李博 | 来源:发表于2022-05-26 19:43 被阅读0次
    什么是Gerrit

    Gerrit 是一个基于 web 的代码评审工具, 它基于 git 版本控制系统。Gerrit 旨在提供一个轻量级框架, 用于在代码入库之前对每个提交进行审阅。更改将上载到 Gerrit, 但实际上并不成为项目的一部分, 直到它们被审阅和接受。它是标准开源过程的一个简单工具来支持提交补丁程序, 然后由项目成员在应用到代码库之前进行评审。

    1.配置sshkey
    生成 SSH Key:
    ssh-keygen -t rsa -C "xxxx@xxx.com"
    
    输入命令获取公钥,然后添加入sshKey。
    /* macOS 系统 */
    pbcopy < ~/.ssh/id_rsa.pub
    
    /* windows 系统 */
    clip < ~/.ssh/id_rsa.pub
    
    2.clone代码

    进入gerrit的项目代码仓库下,有如下两种clone方式,带有hook的是有提交代码远程路径的,不带hook的是没有远程仓库路径的,这里当然要选择带hook的(下载的时候需要连同hooks钩子脚本)。


    3.提交代码
    • 首先肯定是add和commit。
    git add .
    git commit -m ""
    
    • 使用同一个change ID重新提交:
      change ID的作用就是用来识别不同的codeReview。git commit --amend命令可以把这次commit的信息与上次的commit合并起来。
    git commit --amend
    
    4.推送代码

    如果还用git push origin 分支名,那这里会报not permitted,当然是因为gerrit不允许直接将本地修改同步到远程仓库。开发者必须先push到远程仓库的refs/for/*分支上,等待codeReview。


    • 而应该使用如下命令推送:
    git push origin HEAD:refs/for/branchxxx
    
    5.在线编辑功能
    • 可以在gerrit上修改commit message。
    6.代码审核
    • 然后就会在gerrit上生成一个代码审核的Change-Id,进入这个链接。


    • 然后添加2个codeReview人员进行+1+2(审核),完成之后再需要+verify,然后submit就可以入库。


    • 将功能代码推到其他分支:
      在gerrit上可以直接选择要cherry pick的分支,将代码cp到其他分支,或者切到某个分支使用download patch的命令来cherry pick到本地。


    • Abandon
      如果代码因为merge冲突或者是不符合审核规则,可以在gerrit页面进行abandon处理,此时远程仓库拒绝代码合入,也就是远程仓库没有你的提交。


    • rebase
      更改当前提交的parent,当执行rebase操作时,git会从两个分支的共同祖先开始提取待变基分支上的修改,然后将待变基分支指向基分支的最新提交,最后将刚才提取的修改应用到基分支的最新提交的后面。

    • 撤销提交:git reset

    git reset --hard : 回退版本库,暂存区,工作区。

    git reset --mixed: 回退版本库,暂存区。

    git reset --soft: 回退版本库。

    问题总结:
    1. git clone下载下来的库,文件夹里试空的。只把一些配置文件下载了,源码都没有下载,但是项目大小却是正确的。
      处理:需要checkout一下分支文件就会出现。

    2.remote: commit fe0f5b0: warning: subject >50 characters; use shorter first paragraph
    处理:提交的信息太多,不应该大于50个长度,reset后重新提交。

    相关文章

      网友评论

        本文标题:Gerrit使用总结

        本文链接:https://www.haomeiwen.com/subject/wygyprtx.html