@xuanzai/gerrit-tools v2.0.0
gerrit-tools :fire:
gerrit shell脚本工具,旨在帮助开发者快速地操作Gerrit,无需额外记忆Gerrit指令。
它帮你干了什么?
- 将繁琐的
git
指令与流程简化为常见的这几条命令:switch
:切换分支.commit
:add 并 commit代码.push
:将分支提交到远程仓库.merge
:合并远程分支并生成merge/{开发分支}
.
- 搭配飞书机器人,能在
push
的时候自动给reviewer
推送消息,提醒reviewer
进行code-review
.
准备工作
1. 安装或更新
请先配置
node
环境,建议使用nvm
并安装node >= 14
版本
npm i @xuanzai/gerrit-tools -g --registry=https://registry.npmjs.org/
或
yarn global add @xuanzai/gerrit-tools --registry=https://registry.npmjs.org/
在飞书中搜索gerrit-tools
即可搜到机器人,建议将其置顶,快速应答他人的code-review
.
2. 给项目添加 webhookurl
gitlab仓库 -> setting(设置) -> webhooks -> url:https://gthook.shopcider.cn/
用于添加 gitlab push 同步提醒
完整流程演示
你可以使用gerrit
作为命令启动,也可以使用简写ger
,两者完全一样!下面将统一采用gerrit
命令作演示~
方式一:从 gerrit 拉取项目则走如下流程
第一步:拉取项目
第二步:创建并切换至开发分支
项目根目录执行:
gerrit switch <开发分支> [base:默认为master]
第三步:修改代码后提交
# 已包含 add 操作
gerrit commit -m "your message"
# 或者 仅改变changeID
gerrit commit
第四步:推送开发分支到 gerrit
# 说明:分支名、-r、-s为可选参数
gerrit push [分支名:默认当前分支] [-r <reviewer的邮箱前缀如:zixuan.wen>] [-s <评分>]
# 示例:reviewer是蒋盛和子旋(用逗号隔开),评分为2
gerrit push -r sheng.jiang,zixuan.wen -s 2
按照控制台输出提示,进行代码code-review
,reviewer将收到飞书通知
第五步:推送开发分支到 gerrit/dev
开发分支已经submit后,合并dev
并生成merge/{你的当前分支}
分支:
gerrit merge dev
推送到gerrit dev
:
gerrit push dev [-r <reviewers>] -s [<评分>]
方式二:从 gitlab 拉取项目则走如下流程
第一步:拉取项目
第二步:初始化 gerrit 项目
本地目录中执行:
# 说明
gerrit init [你的企业邮箱]
# 示例
gerrit init zixuan.wen@shopcider.com
第三步:创建并切换至开发分支
本地项目根目录执行:
gerrit switch <开发分支> [base:默认为master]
第四步:修改代码后提交
# 已包含 add 操作
gerrit commit -m "your message"
# 或者 仅改变changeID
gerrit commit
第五步:推送开发分支到 gerrit
# 说明:分支名、-r、-s为可选参数
gerrit push [分支名:默认当前分支] [-r <reviewer的邮箱前缀如:zixuan.wen>] [-s <评分>]
# 示例:reviewer是蒋盛和子旋(用逗号隔开),评分为2
gerrit push -r sheng.jiang,zixuan.wen -s 2
按照控制台输出提示,进行代码code-review
,reviewer将收到飞书通知
第六步:推送开发分支到 gerrit/dev
开发分支已经submit后,合并dev
并生成merge/{你的当前分支}
分支:
gerrit merge dev
推送到gerrit dev
:
gerrit push dev [-r <reviewers>] -s [<评分>]
高级操作
设置如下变量值后,将在
gerrit push
时默认读取全局参数兜底,无需再次声明;同样,你也可以显式声明-r
与-s
进行当次push
覆盖.
设置全局默认reviewers
# 示例
gerrit config set reviewers zixuan.wen,sheng.jiang,zijie.li
设置全局默认评分
# 示例
gerrit config set score 2
操作指令说明
这里建议使用如下命令代替繁琐的
git
操作。当然,如果遇到复杂的使用场景,你同样也可以使用git
操作。
初始化 gerrit 仓库
gerrit init [email:你的 cider 企业邮箱,不填则默认使用你的 git config user.email]
该指令帮你关联
gerrit
远程仓库,同时完成hook
的生成操作
将远程分支同步到本地
gerrit fetch
等同于
git fetch gerrit
将远程分支同步并合并到本地分支
gerrit pull [分支名:不填则默认为拉取当前开发分支]
等同于
git pull gerrit [分支名]
创建远程 gerrit 分支
gerrit create <分支名> [基于哪条分支创建,默认master]
# 示例:创建远程 gerrit feature/xxx 分支
gerrit create feature/xxx master
等同于
ssh -p 29418 {你的邮箱}@gerrit.shopcider.cn gerrit create-branch {project} {branch} ${base}
创建并切换开发分支
gerrit switch <分支名> [base: 基于哪条分支创建,默认为master]
# 示例:创建并切换至 feature/xxx 分支
gerrit switch feature/xxx master
等同于
# 如果本地分支不存在,创建并切换
gerrit create <分支名> master && git fetch gerrit && git checkout -b <分支名> gerrit/<分支名>
# 如果本地分支存在,则直接切过去
git checkout <分支名>
commit 分支
gerrit commit [-m "your message"]
# 仅修改 changeID 则不带 -m 参数
gerrit commit
等同于
# gerrit commit [-m "your message"]
git add . && git commit -m "your message"
# gerrit commit
git add . && git commit --amend --no-edit
将开发分支合并到远程分支
请在开发分支上执行该命令,这将会新建一条暂存分支用于推送至远程
gerrit
分支
gerrit merge <分支名>
# 示例:合并远程 gerrit 仓库的 dev 分支
gerrit merge dev
等同于
git checkout dev && git pull gerrit dev && git checkout -b merge_{当前分支} && git merge --no-ff --no-edit {nowBranch}
将分支推送到gerrit远程分支
# 说明:分支名、-r、-s、-p为可选参数
gerrit push [分支名:默认当前分支] [-r <reviewer的邮箱前缀如:zixuan.wen>] [-s <reviewer分数>] [-p 直接在开发分支上通过]
# 示例:reviewer是蒋盛,评分为2,reviewer将受到飞书通知
gerrit push -r zixuan.wen -s 2
# 示例:直接在开发分支上强制通过,其他分支(如:dev、main、master)不允许强制通过
gerrit push -p
等同于
git push gerrit HEAD:refs/for/{你的分支}
生成change-ID(建议使用:gerrit commit
指令代替)
gerrit change
等同于
git add . && git commit --amend --no-edit
重置为远程 gerrit 分支头结点
gerrit reset [分支名]
等同于
git reset --soft gerrit/{你的分支}
查看 reviewer 列表
gerrit reviewers
查看 gerrit 变量配置信息
gerrit config list
设置 gerrit 变量值
gerrit config set <key> <value>
获取 gerrit 变量值
gerrit config get <key>
删除 gerrit 变量值
gerrit config delete <key>
ToDo
- 模板框架大体实现
- 校验本地是否有
hook
,避免重复注入hook
(不用判断) - 跑通完整流程
- 带群机器人提醒
- 带私聊机器人提醒
- 完善并处理错误边界
其他常见问题及文档
当出现 xxxx 分支 closed 的问题如何处理?
出现
closed
的问题一般是因为当前分支已经合并到gitlab
分支上,且进行了ger commit
操作
使用如下命令解决:
gerrit reset
分支重置为 gerrit 远程 closed 分支节点,届时再执行gerrit commit -m "xxxx" && gerrit push
即可
gerrit前端实践文档
gerrit其他帮助文档
工具问题
飞书@温子旋 解决
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago