2.0.0 • Published 1 year ago

@xuanzai/gerrit-tools v2.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

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 同步提醒

完整流程演示

默认已经全局安装@xuanzai/gerrit-tools

你可以使用gerrit作为命令启动,也可以使用简写ger,两者完全一样!下面将统一采用gerrit命令作演示~

方式一:从 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 拉取项目则走如下流程

第一步:拉取项目

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其他帮助文档

点击查看文档

工具问题

飞书@温子旋 解决

2.0.0

1 year ago

1.8.2

2 years ago

1.8.1

2 years ago

1.8.0

2 years ago

1.7.4

2 years ago

1.7.3

2 years ago

1.7.2

2 years ago

1.7.1

2 years ago

1.7.0

2 years ago

1.6.4

2 years ago

1.6.3

2 years ago

1.6.2

2 years ago

1.6.1

2 years ago

1.6.0

2 years ago

1.5.9

2 years ago

1.5.8

2 years ago

1.5.7

2 years ago

1.5.5

2 years ago

1.5.4

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago

1.4.0

2 years ago

1.3.0

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.2.12-alpha.15

2 years ago

0.2.12-alpha.14

2 years ago

0.2.12-alpha.13

2 years ago

0.2.12-alpha.12

2 years ago

0.2.12-alpha.11

2 years ago

0.2.12-alpha.10

2 years ago

0.2.12-alpha.9

2 years ago

0.2.12-alpha.8

2 years ago

0.2.12-alpha.7

2 years ago

0.2.12-alpha.6

2 years ago

0.2.12-alpha.5

2 years ago

0.2.12-alpha.4

2 years ago

0.2.12-alpha.3

2 years ago

0.2.12-alpha.2

2 years ago

0.2.12-alpha.1

2 years ago

0.2.12-alpha.0

2 years ago

0.2.11-alpha.0

2 years ago

0.2.10-alpha.0

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.2-alpha.0

2 years ago

0.1.1-alpha.0

2 years ago

0.1.0-alpha.0

2 years ago

0.0.45-alpha.0

2 years ago

0.0.44-alpha.0

2 years ago

0.0.43-alpha.0

2 years ago

0.0.41-alpha.0

2 years ago

0.0.40-alpha.0

2 years ago

0.0.39

2 years ago

0.0.38

2 years ago

0.0.37

2 years ago

0.0.36

2 years ago

0.0.35

2 years ago

0.0.34

2 years ago

0.0.33

2 years ago

0.0.33-alpha.0

2 years ago

0.0.32-0

2 years ago

0.0.31-alpha.0

2 years ago

0.0.30

2 years ago

0.0.30-alpha.0

2 years ago

0.0.29-0

2 years ago

0.0.28

2 years ago

0.0.27

2 years ago

0.0.26

2 years ago

0.0.25

2 years ago

0.0.24

2 years ago

0.0.23

2 years ago

0.0.22

2 years ago

0.0.21

2 years ago

0.0.20

2 years ago

0.0.19

2 years ago

0.0.18

2 years ago

0.0.17

2 years ago

0.0.16

2 years ago

0.0.15

2 years ago

0.0.14

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago