19次发布
使用旧的Rust 2015
0.1.24 | 2018年2月5日 |
---|---|
0.1.23 | 2017年8月12日 |
0.1.19 | 2017年3月29日 |
0.1.8 | 2016年11月14日 |
0.1.2 | 2016年7月31日 |
#3 in #gerrit
每月下载 38次
155KB
2.5K SLoC
简介
gerrit-rust
是用Rust编写的gerrit控制台客户端。这是一个 rust学习者 项目。请对我有耐心 :-)
目前与Gerrit V02.09和V02.13进行了测试。
贡献
常见的GitHub工作流程:fork、clone、branch、commit、push然后pullrequest。我对每个PR都很高兴,但我会就变化提问,以便从您的知识中学习。
依赖项
- 在
git
二进制文件中已安装$PATH
- 已安装下载插件的gerrit服务器
手册 & 建议
此处有一些设计考虑。已实现的功能用 [x]
标记。所有其他想法都是待办事项,并用 [ ]
标记。
-
semver版本为1.0.0。在这个版本之前没有semver!
-
从宿主机删除外部依赖
- git二进制文件
- 带有下载插件的gerrit
-
管理多个存储库(如git子模块)中的主题
-
0.1.0
ggr topic forget <BRANCHNAME> [-R]
在主文件夹中删除分支,并在所有子文件夹中使用-R
。- 将
-s
选项与-R
结合使用,以递归删除所有没有提交的分支和仓库,并对不干净的仓库/分支发出警告。
- 将
-
0.1.8
ggr topic checkout <BRANCHNAME>
在所有仓库上检出分支。- 0.1.8 首先检查基本文件夹,如果检出发生同步所有子模块,然后在子文件夹中检出主题更改
-
0.1.7
ggr topic pull ...
等同于ggr topic fetch
。此子函数被重命名,因为fetch
与git术语比pull
更一致。 -
0.1.8
ggr topic fetch [-f] [-b branchname] <topicname>
获取特定主题的最新提交版本。为所有更改创建一个以补丁标识符命名的分支,或使用-b
与指定的分支名称。- 0.1.9 通过
--track <branch>
选项添加跟踪信息。 - 0.1.14 添加
--closed
选项以拉取已关闭(合并)的主题。 - 0.1.21 添加
-
获取主题的历史记录。见topic history
。
- 0.1.9 通过
-
0.1.21
ggr topic history <topicname>
将所有更改的所有版本作为标签获取。标签格式为ggr/<topicname>/<topicid>
。其中topicid
是补丁的参考编号加版本。 -
0.1.17
ggr topic reviewer [<TOPIC>] [-r <+/-MAIL>,...]
添加(+)或删除(-)审阅者(-
)到主题。如果没有选项,我们将收到该主题上所有审阅者的列表。- 0.1.17
-
/--verbose
用于详细查看批准情况 - 没有 TOPIC 时,使用基础和子模块上的实际主题 (!=master)。
- 添加
--format
选项用于输出格式化。使用 rust 变量和格式化信息,如{email}
,{email:15.2}
。
- 0.1.17
-
0.1.18
ggr topic abandon|restore [<TOPIC>]
放弃/恢复一个完整主题。- 没有 TOPIC 时,使用当前主题
- 0.1.18
[-m <MESSAGE>]
向所有更改添加放弃信息 -
[-n <NONE|OWNER|REVIEWERS|ALL>]
通知一组账户关于此放弃操作或不要通知(通过NONE
)。默认为ALL
。
-
0.1.19
ggr topic verify [<TOPICNAME>] [-c <code-review>] [-l "<revie-label>"] [-m <MESSAGE>]
Gerrits 标签可以在服务器端进行配置。通过-l
选项可以访问标签。(例如,-l "Code-Review:2"
)。选项-c <VALUE>
是一个方便的选项,用于-l "Code-Review:<VALUE>"
。当前,标签的可能值仅为-2/-1/0/1/2
。另外,可以在主题的所有提交上附加消息。- 0.1.21 没有选项时,将打印审查过程的概述
-
-
查询变更
-
0.1.0
ggr changes query <QUERY>
查询搜索字符串到 gerrit 服务器。使用与 gerrit 网络前端相同的语法作为QUERY
。例如-
0.1.7 添加
--regexp-selector
以仅显示由正则表达式选择的键。这删除了 0.1.4 中引入的 --fields 选择器。 -
0.1.6 添加一个
--human
选项以打印人类可读格式。 -
0.1.4 添加
--field-list
以获取所有可选字段,可用于第二次调用时的--fields
选项。 -
0.1.4 添加
--raw
以获取原始格式的 json。可用于通过管道进行漂亮的打印。 -
0.1.4 选项
-o
/--ofields
以获取更改的额外信息(如 REVISION 等 ...)
示例
ggr changes query status:open is:watched n:2
:查询标记为已查看的打开更改。
-
-
-
0.1.5 使用 curl-rs 作为 http 客户端
-
0.1.0 使用 TOML 格式的配置文件
.ggr.config
-
api
:带有模式的基准 URL(http) -
0.1.3 用户身份验证(自 0.1.9 起已弃用)
username
:登录用户名password
:登录密码 [x] 0.1.9 仅尊重.netrc
设置的用户名和密码。配置文件中的 u/p 被忽略
-
root
:如果是所有存储库下最高级别的项目则为 true -
身份验证(例如:摘要,基本)
-
digest
和basic
受支持。当前实现调用两者。第一个是basic
,第二个是digest
。
-
-
考虑通过配置文件进行配置或将所有设置放入
.git/config
中的条目。
配置文件和 git-config 方法中的值相同。对于 git-config,我们使用ggr-
作为前缀。 -
提供一个配置前端
-
ggr config set baseurl 'http://localhost'
:设置新的baseurl
-
ggr config unset -C project1 root
:从 project1 仓库中删除root
-
ggr config set root
:为当前仓库设置 root - 0.1.0
ggr config list
:列出所有选项- ... 以及设置的来源
-
ggr config generate --base <...> ...
:生成一个.ggr.config
文件
-
-
0.1.9 使用
$HOME/.netrc
文件获取用户名和密码。
-
-
添加一个
--dry-run
选项来打印我们想要执行的操作,但实际上不执行- 更改获取
- gerritapi 更改放弃
- gerritapi 更改创建
- 主题获取
- 主题放弃
- 主题检出
- 主题创建
- 主题获取
- 主题忘记
- 0.1.21 主题历史
- 主题恢复
- 主题审阅者
- 主题验证
-
库功能
-
0.1.16 CLI 需要一个子命令来完成低级任务 -> gerritapi
-
0.1.0 实现了 http 请求和响应的基础
-
构建一个功能完整的库来与 gerrit 服务器协同工作
- 访问端点
- 账户端点
- 更改端点
- 0.2.0 创建更改
- 0.2.0 查询更改
- 0.2.4 获取更改
- 0.2.4 获取更改详情
- 获取主题
- 设置主题
- 删除主题
- 放弃更改
- 0.2.2 恢复更改
- 0.2.2 变基更改
- 移动更改
- 撤回更改
- 提交更改
- 一起提交的更改
- 发布草稿更改
- 删除草稿更改
- 获取包含项
- 索引更改
- 列出更改评论
- 列出更改草稿
- 检查更改
- 修复更改
- 审阅者端点
- 0.2.1 列出审阅者
- 建议审阅者
- 0.2.1 获取审阅者
- 0.2.1 添加审阅者
- 0.2.1 删除审阅者
- 列出投票
- 删除投票
- 修订端点
- 获取提交
- 获取修订动作
- 获取审阅
- 获取相关更改
- 0.2.3 设置审阅
- 变基修订
- 提交修订
- 发布草稿修订
- 删除草稿修订
- 获取补丁
- 获取可合并
- 获取提交类型
- 测试提交类型
- 测试提交规则
- 列出修订草稿
- 创建草稿
- 获取草稿
- 更新草稿
- 删除草稿
- 列出修订评论
- 获取评论
- 列出文件
- 获取内容
- 下载内容
- 获取差异
- 获取归咎
- 设置已审阅
- 删除已审阅
- 选择修订
- 配置端点
- 0.2.0 获取版本
- 获取服务器信息
- 确认电子邮件
- 列出缓存
- 缓存操作
- 获取缓存
- 刷新缓存
- 获取摘要
- 列表功能
- 列出任务
- 获取任务
- 删除任务
- 获取顶级菜单
- 获取默认用户偏好设置
- 设置默认用户偏好设置
- 获取默认差异偏好设置
- 设置默认差异偏好设置
- groups端点
- plugins端点
- projects端点
-
-
已移除的功能
-
ggr主题创建<BRANCHNAME> [-r sub:rev]
自0.1.22版本起已移除,请使用以下命令代替:git submodule foreach 'git branch <topicname>; true'
旧功能
在主文件夹和指定的子文件夹中创建分支。如果存在同名分支,则不进行操作。
rev
是创建分支时应使用的引用,默认为orign/master
。对于基本文件夹使用-r .
。
-
-
其他想法
-
0.1.9 实现日志机制,通过日志级别开关获取调试信息
-
0.1.20
ggr changes fetch CHANGEID
获取changeid CHANGEID 及其祖先。分支名称为 CHANGEID 名称。 -
0.1.16 支持多个gerrit服务器
-
0.1.14 创建用于设置开发环境的辅助脚本
- 基于docker的gerrit服务器
找到docker镜像docker pull openfrontier/gerrit
- 设置gerrit的密码和用户名
- 自动生成git仓库和子模块
- 为这些仓库设置gerrit
- 自动将master分支推送到gerrit
- 基于docker的gerrit服务器
-
ggr统计[-F<日期>] [-T<数据>]
一些统计信息,如一周内或一段时间内打开和关闭的审查。通过iso-8601类似date -Is
。示例
ggr stat -F 1w
:从上周到现在ggr stat -F 2015-12-31 -T 2016-02-01
:从2016年1月1日T00:00到2016年2月1日T23:59:59ggr stat -F 2016-01-01
:从2016年2月1日T00:00到目前ggr stat -T 2016-02-01
:从开始使用gerrit到2016年2月1日T23:59:59
-
ggr主题列表-s
列出所有开发分支和仓库。使用-s
包括分支中的提交,如git submodule summary
。 -
ggr主题推送[-b] [<BRANCHNAME>]
将更改推送到gerrit。如果没有-b
,则推送到gerrit。使用选项-b
,则推送到构建服务器。如果没有分支名称,则推送当前分支。 -
ggr主题重命名OLDTOPIC TOPIC
将OLDTOPIC重命名为TOPIC- 使OLDTOPIC可选,当前主题将被重命名
-
每个提交的审查者
-
每个仓库的审查者
-
分支状态
显示分支状态(远程和本地,例如git remote show ...
ggr 状态[<BRANCHNAME>]
-
支持
.repo
文件夹 -
0.1.11 文档
gerritlib::call
模块 -
0.1.5 添加 .travis.yml
-
使用 docker 在本地主机上启动 gerrit 演示服务器
这会创建一个可以通过 https://127.0.0.1:8080 连接的 docker 容器。服务器已设置为开发环境,所有账户都可以执行所有操作。它生成或使用一个包含设置、存储库和 ssh 密钥的 DOCKER-FOR-GERRIT
文件夹。
docker run --rm -it \
-h localhost
-p 8080:8080 -p 29418:29418 \
-v /development/projects/DOCKER-FOR-GERRIT:/var/gerrit/review_site \
--name gerrit \
openfrontier/gerrit:latest
有用的链接
- gerrit API 文档: https://gerrit-review.googlesource.com/Documentation/rest-api.html
- 请求、响应设计来自: https://github.com/gefolderstsentry/sentry-cli
许可证
许可下
- Mozilla 公共许可证 2.0 (LICENSE-MPL-2.0 或 https://www.mozilla.org/media/MPL/2.0/index.txt)
依赖
~22–32MB
~590K SLoC