npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@xuanzai/gerrit-tools

v2.0.0

Published

gerrit shell工具集

Readme

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 [email protected]

第三步:创建并切换至开发分支

本地项目根目录执行:

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

  • [x] 模板框架大体实现
  • [x] 校验本地是否有hook,避免重复注入hook(不用判断)
  • [x] 跑通完整流程
  • [x] 带群机器人提醒
  • [x] 带私聊机器人提醒
  • [x] 完善并处理错误边界

其他常见问题及文档

当出现 xxxx 分支 closed 的问题如何处理?

出现closed的问题一般是因为当前分支已经合并到gitlab分支上,且进行了ger commit操作

使用如下命令解决:

gerrit reset

分支重置为 gerrit 远程 closed 分支节点,届时再执行gerrit commit -m "xxxx" && gerrit push即可

gerrit前端实践文档

点击查看文档

gerrit其他帮助文档

点击查看文档

工具问题

飞书@温子旋 解决