• OpenStack提交代码的review流程


      本文整理向openstack社区提交代码的基本流程,以及社区一些介绍资料。如有转载,请注明出处!

      先放张图说明一下OpenStack的code review的大体流程:

      对OpenStack提交代码更改的流程主要如下:

    • 配置Git与Gerrit环境
    • 克隆目标项目的代码并在新branch上进行更改
    • commit到本地的repo后推送给远端Gerrit,然后由reviewer给出意见
    • 根据reviewer的修改意见不断更新patch

      其中OpenStack使用Gerrit作为代码review系统,使用Jenkins系统对代码进行自动测试,使用tox工具可以在本地进行相同的代码测试。

    基本前提

    1. 创建一个Launchpad账号(Gerrit使用Launchpad进行SSO)
    2. 登录Gerrit,完成基本配置
    3. 加入OpenStack基金会
    4. 签署Contributor License Agreement
    5. 安装 Git 和 git review

      本文所有操作在Ubuntu Server 14.04 LTS上进行

    配置Git

      首先配置Git命令行工具,便于以后的操作

    $ git config --global user.name 'YourName'
    $ git config --global user.email example@example.com
    $ git config --global gitreview.username YourName

       如果需要查看Git的配置:

    $ gir config --list

    安装配置Git-Review

      1. git-review工具是一组Git子命令,主要用于和OpenStack的代码review系统Gerrit交互,git-reviewGerrit的交互是一组Git命令,在每个git review命令后添加-v选项可以打印所有运行的Git命令。

    $ sudo apt-get install git-review

       2. 在你要提交代码的机器上生成一个SSH key

     $ ssh-keygen –t rsa 

      如果创建RSA密钥时设置了口令,该口令需要妥善保管,因为以后每一次提交都需要验证该口令。

      3. 查看公钥部分并将其复制到git-review

    $ less ~/.ssh/id_rsa.pub

      将公钥部分的内容添加到git-review即可。

    在本地克隆代码库

    1. 克隆源码
    $ git clone https://github.com/openstack/YourTargetProjectName.git
    1. 进入到克隆后的目录
    $ cd YourTargetProjectName
    1. 建立git review 环境
    $ git review -s
    
    This repository is now set up for use with git-review. You can set the default username for future repositories with: 
    git config --global --add gitreview.username yourgerritusername
    1. 可以在Git中设置Gerrit/Launchpad的用户名,
    $ git config --global --add gitreview.username YourName
    1. check out master分支,更新远端并将其pull到本地的master分支
    $ git checkout master; git remote update; git pull origin master

      6. Launchpadreport 一个新的bug 或者找一个尚未被解决的bug然后将它assign给自己,将bug的状态改为In progress, OpenStack使用Launchpad记录Blueprints和报告bugs。

      7. 想要fix某个bug,就必须新建一个分支,然后在这个分支里对源代码进行修改,例如:

    $ git checkout -b fix-bug-#123456
    1. 上述命令创建并切换到新分支“fix-bug-#123456”,接下来所有的本地工作在这个分支里进行,直到所有fixation都完成后再commit
    $ git commit -a

      提交时会要求输入commit messagecommit message可以有下面的字段:

      Implements: blueprint BLUEPRINT

      Closes-Bug: #123456

      Partial-Bug: #123456

      Related-Bug: #123456

      通过这些字段来标识自己工作相关的bug或者blueprint,一旦注明,CI系统会自动将你的commit和相同IDbug对应起来。

    1. 上面的命令提交到本地repo后接下来就是pushGerrit了。
    $ git review -v

       Gerrit是OpenStack远端Git仓库的一道大门,所有的submission都要在这里经过review后才能被mergemaster分支中,因此之前的工作一定不能在master分支进行,这样会产生一个merge commitGerrit默认是不接受merge commit的。

       如果提交成功,Gerrit将返回一个显示你此次提交内容的URL,打开它就可以查看commit以及reviewer的评价了:http://review.openstack.org/nnnnnn

    如果需要修改commit怎么办?

      此时需要到http://review.openstack.org上查找自己的patch记录,然后记下这一个patchreview number,就是review.openstack.org对应patch页面的后几位数字:https://review.openstack.org/#/c/nnnnnn/

    $ cd ourTargetProjectName    #切换到项目源码目录
    $ git review -d nnnnnn        #把patch给check out,然后就可以编辑了

       接着根据reviewer们的意见重新编辑patch,然后提交

    $ git commit -a --amend    #在本地commit
    $ git review

      对上一次的commit进行了修改,或者commit message没有写标准,都可以重新提交commit,但是一定要切换到自己上次提交commit的分支执行上面的命令。如果希望查看完整的git命令流,可以在git review命令后添加 -v选项。

    2015-04-01 12:24:50.927128 Running: git log --color=never --oneline HEAD^1..HEAD
    2015-04-01 12:24:50.930189 Running: git remote
    2015-04-01 12:24:50.932609 Running: git branch -a --color=never
    2015-04-01 12:24:50.935309 Running: git rev-parse --show-toplevel --git-dir
    2015-04-01 12:24:50.937601 Running: git remote update gerrit
    Fetching gerrit
    2015-04-01 12:25:04.406800 Running: git rebase -i remotes/gerrit/master
    2015-04-01 12:25:04.507110 Running: git reset --hard ORIG_HEAD
    2015-04-01 12:25:04.514952 Running: git config --get color.ui
    2015-04-01 12:25:04.517383 Running: git log --color=always --decorate --oneline HEAD --not remotes/gerrit/master --
    2015-04-01 12:25:04.523654 Running: git branch --color=never
    2015-04-01 12:25:04.526527 Running: git log HEAD^1..HEAD
    Using local branch name "fix-bug-123456" for the topic of the change submitted
    2015-04-01 12:25:04.530764 Running: git push gerrit HEAD:refs/publish/master/fix-bug-123456
    remote: Processing changes: updated: 1, refs: 1, done
    remote: (W) 81a1233: commit subject >65 characters; use shorter first paragraph
    remote: (W) 81a1233: no files changed, message updated
    To ssh://YourName@review.openstack.org:29418/openstack/TargetProject.git
     * [new branch]      HEAD -> refs/publish/master/fix-bug-123456
    2015-04-01 12:25:11.126958 Running: git rev-parse --show-toplevel --git-dir

    一些Troubleshoot

      如果配置GitGerrit的过程中遇到了问题,https://wiki.openstack.org/wiki/Documentation/HowTo/FirstTimers的最后提供了常见问题的troubleshoot,可以参考。

    OpenStack的Commit Message风格,

      这里对于每一次提交commit时commit message的风格有一定的介绍:https://wiki.openstack.org/wiki/GitCommitMessages

    OpenStack的bug分流,

      这里有OpenStack对不同程度的bug进行分流的介绍:https://wiki.openstack.org/wiki/BugTriage

    OpenStack的bug分类,

      OpneStack根据状态、重要程度等指标对Bug进行分类:https://wiki.openstack.org/wiki/Bugs

    OpenStack的blueprints,

      WIKI介绍:https://wiki.openstack.org/wiki/Blueprints

      Launchpad上的OpenStack项目首页:https://blueprints.launchpad.net/openstack

    OpenStack所有项目的Spec,

      specifications记录了每个项目的设计规范,这里是所有项目的Specs:http://specs.openstack.org/

    OpenStack的发行周期,

      这里是关于发行周期的一些介绍,https://wiki.openstack.org/wiki/ReleaseCycle

      所有OpenStack项目的分支tar包:http://tarballs.openstack.org/

    OpenStack代码分支模型,

      这里是代码分支模型的介绍,https://wiki.openstack.org/wiki/Branch_Model

  • 相关阅读:
    Linq&Lumbda
    PS颜色模式
    WPF绑定方式
    明三杰刘健
    齐有鲍叔,郑有子皮
    朱厚照
    管子&小白
    时间
    人外有人之神箭手养繇基篇
    楚共王
  • 原文地址:https://www.cnblogs.com/Security-Darren/p/4383838.html
Copyright © 2020-2023  润新知