• Gerrit了解


    转自:http://www.uml.org.cn/codeNorms/201901033.asp

    1.介绍

    Gerrit实际上一个Git服务器,它为在其服务器上托管的Git仓库提供一系列权限控制,以及一个用来做Code Review,是Web前台页面。 

    2.工作流程 

    Gerrit相对Git提供了一个特有的命名空间“refs/for/”用来定义我们的提交上传到哪个branch,且可以用来区分我们的commit是提交到Gerrit进行审核还是直接提交到Git仓库,格式如下:refs/for/<target-branch> ,Push一个Commit到Gerrit:

    $ git commit
    $ git push origin HEAD:refs/for/master

    默认不允许直接Push一个commit到Git仓库:

    $ git commit
    $ git push origin HEAD:master

    3.概念

    3.1 Change

    一个Change包含一个Change-Id,Change-Id是一串SHA-1字符串。这个Id就是通过我们拉取代码库的时候所拷贝的hooks(hooks/commit-msg)自动生成的。

    包含一个或多个Patch Set,以及Owner,Project,Target branch, Comments等信息。

    在一个project的每个branch中Change Id是唯一的。(?什么意思?)

    3.2 Patch Set

    一个Patch Set就是一次commit,Gerrit会将其生成一个Branch暂存。Change中的每提交一个Patch Set表示这个Change的一个新的版本,自动覆盖前一个Patch Set, 默认情况下,仅最后一个Patch Set是有意义的。Code Review通过时,也仅仅是最后一个Patch Set会合并到指定的branch中。

    个人Git工作原则一

    ** 永远是基于远程库的最新代码工作,尽量每一步操作(特别是add/commit/push)都通过git pull --rebase获取一下当前最新版本。**

    根据以上原则,建议在将本地commit push到Gerrit之后,立马reset掉,或者重新切换一个新的分支工作。(还是重新切换一个分支工作吧,直接reset风险较大,万一代码不合格倍打回来呢。)

    上传一个新的patch set:

    当我们的commit被reviewer打回来时,我们可能需要修改并重新提交。可以重新切换回包含此commit的分支,在此代码基础上进行修改,重新add,amend commit:

    // rework the change
    $ git add <path-of-reworked-file>
    ...
    
    // amend commit
    $ git commit --amend
    
    // push patch set
    $ git push origin HEAD:refs/for/master

    个人Git工作原则二

    ** 尽可能保证每一个Change的完整性以及独立性,且越小越好。**

  • 相关阅读:
    为什么要有这个“修改”按钮
    用C++托管程序来保护敏感数据
    计算机辅助学习软件CAS和CAL的区别和联系
    C#/C++获取CPU和硬盘系列号的源代码
    计算机辅助学习英语单词分组的设计
    IC设计过程
    中国25位最具影响力的IC人物
    PLD/FPGA开发环境
    挑战功耗:低功耗ASIC设计技术
    沙子变黄金——CPU制造全过程
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/16626207.html
Copyright © 2020-2023  润新知