gerrit git使用

有关git的参考资料

  • pro git中文版, 最好的git书籍

http://git-scm.com/book/zh

  • 图解git

http://marklodato.github.com/visual-git-guide/index-zh-cn.html

  • git交互式学习

http://try.github.com/levels/1/challenges/1

  • Git分支管理策略

http://blog.jobbole.com/23398/

  • type3的关于git和Gerrit资料

http://wiki.typo3.org/Git_Gerrit

  • egit 和 gerrit的实践应用

http://wiki.typo3.org/Contribution_Walkthrough_with_EGit

有关gerrit
的参考资料

注册帐号

http://review.bitcomm.cn注册用户,采用的是openid统一认证,直接使用公司的google邮箱就可以了。

注册的时候,注意:

  • 设置自己的用户名,必须为英文或者数字,这个后面授权需要用到,比如我选择的是 refactor
  • 导入自己的公钥,这个在 git 进行 review操作的时候,授权需要用到

注册完了以后,可以看到 testing 项目,可以进行练习和测试。其余的项目,联系项目经理进行授权,将下面的信息发送给项目经理:

注册的邮箱、ssh公钥和对应的项目

工具安装

Windows

  • 安装git 工具

由于目前git的命令行功能和稳定性比图形界面的egit等强,大家在代码递交时,还是使用Windows或者Linux的命令行,windows下可以采用:

windows下的命令行工具:

http://msysgit.github.com

windows下的图形工具:

https://code.google.com/p/tortoisegit/

下载安装windows版本的python,一般可以选用2.7.3

http://www.python.org/download/releases/2.7.3/

下载安装windows版本的setuptools

http://pypi.python.org/pypi/setuptools

下载、解压、安装 pip 软件

http://pypi.python.org/pypi/pip#downloads

进入解压以后的目录,然后执行安装:

python setup.py install

使用pip安装 fabric 和 git-review

pip install fabric git-review

Ubuntu

sudo aptitude install python-pip
sudo pip install fabric git-review

CentOS

sudo yum -y install python-setuptools  python-devel python-pip
sudo pip-python install fabric git-review

导出项目,初始设置

配置递交代码人信息:

git config --global user.name "Peng Yong"
git config --global user.email [email protected]

从git取出代码:

git clone ssh://[email protected]:2203/testing.git

注意选用自己需要的项目名称替代 testing

设置git review 系统, 第一次需要回答一个用户名,就是你在review系统的用户名

git review -s

如果没有安装 git review 软件包,则手工设置:

git remote add gerrit ssh://[email protected]:29418/testing.git
scp -P 29418 [email protected]:hooks/commit-msg .git/hooks/

注意:

  • 选用自己需要的项目名称替代 testing
  • 使用自己的用户名替代 refactor

日常开发流程

当需要修改一个bug,或者开发新功能时, 需要分几部:

获取最新的代码, 防止和他人冲突

git fetch origin

每一个开发(bug,feature),都创建一个独立的开发分支,不要在 master上做,一般一个单元开发创建一个分支,互相不混淆。否则如果评审不通过,重新修改会麻烦:

git checkout -b dev/username/typefix
git checkout -b dev/username/login_module

修改代码,然后检查代码:

git status
git diff

如果要放弃commit,使用 :

git reset --soft HEAD^

本地递交代码:

git commit –a

注意,看一下这些文件是否都要递交,写好简要、清晰的递交日志。

上传代码,等待评审:

git review

如果没有安装 git review 软件,则手工上传,等待评审:

git push gerrit HEAD:refs/for/master

如果代码审查通过,合并完成以后,可以删除这个分支:

git checkout master
git branch -d dev/username/typefix

如果评审不通过,需要再次修改代码,则继续在原来的分支修改代码

切换到原来的开发分支:

git checkout bug/typefix

修改代码…

然后递交(注意,一定使用 amend选项,这样可以继续递交在原来的review单号上)

git commit -a --amend

上传代码等待审批

git review

如果没有安装 git review 软件,则手工上传,等待评审:

git push gerrit HEAD:refs/for/master

如果代码审查通过,合并完成以后,可以删除这个分支:

git checkout master
git branch -d bug/typefix

审批通过以后,gerrit提示有冲突怎么办

参见合并的参考文档:

冲突产生,是由于两个开发人员,修改了同一个文件。解决办法:

git fetch origin
git rebase origin/master

git合并能力很强,一般的冲突上面可以自动解决了。如果冲突在同一个地方,需要手工解决。这个情况,请联系资深工程师帮助一起解决。需要用编辑器修改相应文件, 然后标志这些文件冲突解决,继续rebase:

git add -u
git rebase --continue

最后递交审查:

git commit -a --amend
git review

私有分支的使用

私有分支的应用场景

  1. 在正式递交代码之前,开发调试往往需要和同事协同开发
  2. 需要部署到测试机上进行测试, 但又不想递交到master
  3. 个人在公司、家里、工地进行代码的同步
  4. 个人需要开发一个较复杂的功能,在递交评审之前,需要频繁递交代码, 并且为了代码安全性,需要上传到远程备份

这时就需要使用gerrit的私有分支, 具体的步骤是:

私有分支的命名:

dev/username/branchname

其中:

  • dev 私有开发分支的前缀,必须是 dev
  • username 你的 gerrit系统的用户名
  • branchname 你创建的私有分支名字,可以创建多个分支

创建本地的私有分支

git checkout -b dev/refactor/fabric

开发,然后递交到本地,这个和普通开发一样

上传到 gerrit,并自动同步到 公司的官方git源(一般叫origin)

git push gerrit HEAD:dev/refactor/fabric

其他同事切换到这个私有分支,并且获取刚才的修改

git fetch origin
git checkout dev/refactor/fabric
git pull

在这里可以进行修改和递交,实现协同开发和代码同步

这个分支,经过测试以后,准备递交评审之前,一般使用 rebase 进行适当的合并, 然后递交

git rebase -i HEAD~10
git review

如果这个分支不再需要了,删除这个分支(本地和远程)

git push gerrit :dev/refactor/fabric
git checkout master
git branch -d dev/refactor/fabric

fabric的使用

为了提供工作效率,降低出错的几率,重复性的工作,尽量使用 fabric自动部署工具:

  • 生产机上的部署

    fab

  • 测试分支的部署

    fab branch:dev/refactor/fabric deploy

版本管理规则

一般线上运行的系统,只采用一个
master 主线的方式进行管理

也就是开发人员的代码,通过评审以后,直接merge到master分支;master分支也是生产机上运行的代码。这就要求有质量控制过程,防止错误导致系统的严重错误。

  • 递交的代码,要是一个原子操作,具有高内聚性,即一次递交的所有代码完成且仅完成一个功能,联系紧密,缺一不可
  • 递交的代码,要具有上线标准,要是一个可运行的合格的代码
  • 评审一般都必须至少一个以上的人评审过,最好是同组的开发人员评审,项目经理或者资深开发人员审批。评审的过程,也是结对编程的思想,可以互相熟悉代码,互相学习提高,便于统一代码风格,提高代码质量。

如果一个
feature 是一个需要较长时间开发,比如增加一个短信验证的功能,需要一周时间

在自己的这个开发分支内,可以采取小步快跑的方式不断递交到本地的git。在开发完成以后,在上传到 review服务器进行评审前,需要使用 rebase 命令,将这些多次递交适当进行合并然后上传。

记住,每一次递交在Gerrit评审服务器上,都必须要单独评审审批,如果一个功能有很多小的修改组成,这些小的修改可以适当合并,具体方法是:

git checkout master
git pull origin master
git checkout your-feature-branch
git rebase -i master

如果需要进行改版,会延续几个月的大量改进

需要在 gerrit 评审系统内创建新的开发分支,比如devel分支,而不使用 master 进行管理,以便进行代码的隔离。改版完成以后,将代码从develp合并到master分支。

这时,改版递交代码和评审,都在develop分支进行,上传命令采用;

git review develop

生产机上任然使用 master分支。 这时,一般性的功能改进和bug修正,仍然递交到 master 分支。并且定时从 master merge到develop分支,以便减少冲突,降低以后 develop合并到 master的难度。

FAQ

  • 评审没有通过,但是原有开发分支已经删除,如何恢复这个分支,继续修改代码

在gerrit上找到这个评审单,定位到响应的patchset,里面有获取代码、恢复分支的方式链接, 比如:

git fetch ssh://[email protected]:29418/testing refs/changes/07/7/1 && git checkout FETCH_HEAD
git checkout -b my_branch
  • 如何获取通知邮件

对于关注的项目,可以获取通知邮件,方法是选择菜单:

Settings - Watched Projects

然后使用 Browse 按钮选择响应的项目,然后选择“Email Notifications”的类型,一般全部打勾

  • 如何gerrit评审系统的键盘快捷键

gerrit是google开发的软件,同样支持Google风格的快捷键,类似Gmail的风格。使用快捷键,可以提高阅读和评审的速度。使用问号 "?" 可以寻求快捷键的帮助。

  • 提示"Missing Change-Id in commit message"

这是由于没有下载hook, 生成Change-Id。这个Change-ID是gerrit一个必须的重要标志,多次修改同一个问题的时候,会对应到一个单子。解决方法。

scp -P 29418 [email protected]:hooks/commit-msg .git/hooks/

然后再次递交:

git commit -a --amend
git review
  • Backporting a change to other branches

比如,一个master分支,一个release分支,递交进入master的分支中,有某个bugfix或者新特性需要合并回release分支:

http://wiki.typo3.org/Contribution_Walkthrough_with_CommandLine

git fetch --all
git checkout -b rfc/4-4/1234 origin/<release-branch>
git cherry-pick <revision-id>

去掉Change-Id, Reviewed-*, Tested-by等日志信息

git commit -a --amend
git review <release-branch>
时间: 2024-10-10 16:46:55

gerrit git使用的相关文章

workstart-vanzo gerrit git 等知识点

OpenID 是一个以用户为中心的数字身份识别框架,它具有开放.分散.自由等特性. 什么是gerrit? 看了网上的介绍,感觉所谓的gerrit就是一个基于web实现代码管理的服务器.Gerrit 为 Git 引入的代码审核是强制性的,就是说除非特别的授权设置,向 Git 版本库的推送(Push)必须要经过 Gerrit 服务器,修订必须经过代码审核的一套工作流程之后,才可能经批准并纳入正式代码库中…首先贡献者的代码通过 git 命令(或 repo 封装)推送到 Gerrit 管理下的 Git

gerrit git slow 10Mb/s

12:46 PMBo, Yansonghi 12:46 PMWang, Rip/mediatek/vendor/amazon/signed-prebuilt-a/platform/external/chromium_org/device/htc/flounder-kernel/device/moto/shamu-kernel/fireos/prebuilts/thirdparty/com.nuance.s/mediatek/kernel/common64/fireos/prebuilts/sys

CentOS安装gitlab,gerrit,jenkins并配置ci流程

By Wenbin [email protected] 2016/4/9 这是我参考了网上很多的文档,配置了这三个软件在一个机器上,web分别访问8081,8082,8083端口,成功构建了一个ci流程. 版本都是目前最新的版本. 用户 Gitlab:  root/wenbindevops , wenbin/12345678 Gerrit:  gerrit/gerrit, wenbin/wenbin, jenkins/jenkins Jenkins:  jenkins/jenkins 主机192

android源码GIT下载

mkdir device cd device git clone https://android.googlesource.com/device/common.git mkdir htc cd htc git clone https://android.googlesource.com/device/htc/common.git git clone https://android.googlesource.com/device/htc/dream-sapphire.git git clone h

Git的学习与常用操作

·Git的工作原理关系图: 一个文件从修改到提交的过程: 修改 ---〉工作区中进行,此时工作区的状态比暂存区,版本库区要新 添加 ---〉修改的文件被添到暂存区,工作区与暂存区的文件状态一样,都要比版本库区的状态要新 提交 ---〉暂存区中的文件被写入版本库区,此时工作区,暂存区,工作区中的文件状态时一样的 注意:工作区,暂存区都是临时存放点,不安全 版本库区是安全存放点,所有文件的版本都是控制在版本库区中的 说明:从远程git服务器克隆到本地的git库,有一个隐藏的.git目录,这个目录就是

centos 安装http协议的git server

1.服务器端安装httpd,git,gitweb等 1 #yum install httpd git git-daemon  gitweb 2.服务器端初始化仓库 1 2 3 #mkdir -p /data3/gitserver #cd /data3/gitserver #git init --bare git_repo #初始化一个裸仓库 3.向裸仓库提交初始文件 1 2 3 4 5 6 7 #cd /tmp #git clone /data3/gitserver/git_repo #cd g

提交gerrit 方法步骤

1. 添加公钥认证 那请登录 gerrit 网页 http://172.16.*.*:8080/#/settings/ssh-keys 添加本地公钥内容到gerrit 2. vi  ~/.ssh/configHost gerrit Hostname 172.16.*.* Port 29418 User yourname    ###gerrit登录名一致 3. ssh gerrit 会有如下提示:~$ ssh gerrit **** Welcome to Gerrit Code Review *

CI CD系统整合

转载_CI 系统搭建:Git.Gerrit与Jenkins 2014-08-11 20:55 15678人阅读 评论(1) 收藏 举报 分类: 软件集成和项目管理(3) 目录(?)[+] 去年写的这五篇 CI 文章时候方便邮件测试,自己搞了一个 thstack.com 域名玩.当时也没在意,所有的文章里邮箱地址都是引用 @thstack.com 域名.让我没想到是,2014 年这个神奇的一年,thstack.com 会成为我们的公司名字和域名. 我想说的是,我们内部的邮件系统也在用 @thsta

Gerrit2安装配置

Gerrit是用于Git版本控制系统的代码审核系统. 下载 当前最新版本的gerrit为2.8.1,从官方下载二进制war包即可. 数据库设置 gerrit可以使用H2,PostgreSQL,MySql和Oracle数据库.这个安装使用PostgreSQL数据库. 创建gerrit使用的用户和数据库: $ createuser --username=postgres -RDIElPS gerrit2 $ createdb --username=postgres -E UTF-8 -O gerri