8个版本

使用旧的Rust 2015

0.2.8 2018年2月5日
0.2.7 2017年8月12日
0.2.3 2017年3月29日

#4 in #gerrit

每月 29 次下载
gerrit-rust中使用

MPL-2.0 许可证

64KB
947

Build Status

简介

gerrit-rust 是用Rust编写的Gerrit控制台客户端。这是一个 Rust学习 项目。请对我有耐心:-)

目前已在Gerrit V02.09和V02.13上进行了测试。

贡献

常见的GitHub工作流程:Fork,Clone,Branch,Commit,Push然后Pull Request。我对每一个PR都很高兴,但我将询问关于更改的问题以从您的知识中学习。

依赖项

  • 安装了在 git 二进制文件的 $PATH
  • 安装了下载插件的Gerrit服务器

手册 & 灵感

这里有一些设计考虑因素。实现的功能用 [x] 标记。所有其他想法都是待办事项,并用 [ ] 标记。

  • 在版本1.0.0之前没有semver。

  • 删除对托管的外部依赖

    • git二进制文件
    • 带有下载插件的Gerrit
  • 管理多个仓库(如git子模块)中的主题

    • 0.1.0 ggr topic forget <BRANCHNAME> [-R]
      在主文件夹中删除分支,并在所有子文件夹中使用 -R

      • 添加与 -R 结合使用的 -s 选项,以递归删除所有没有提交且仓库干净的分支。警告不干净的仓库/分支。
    • 0.1.8 ggr topic checkout <BRANCHNAME>
      在所有仓库上检出分支。

      • 0.1.8 首先检查基本文件夹是否检出同步所有子模块,然后检出子文件夹上主题的更改
    • 0.1.7 ggr topic pull ...
      ggr topic fetch 相同。此子功能被重命名,因为 fetchpull 更符合git术语。

    • 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.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.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:查询标记为 watched 的开放更改。
  • 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

    • 身份验证(例如:摘要、基本)

      • digestbasic 都受支持。当前实现同时调用这两个。第一个是 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 命令行界面需要子命令来完成低级任务 -> 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
    • ggr stat[-F<日期>] [-T<数据>]
      一些统计信息,如一周内或时间范围内的已打开和关闭审查。通过 iso-8601 如 date -Is

      示例

      • ggr stat -F 1w:从上周到现在
      • ggr stat -F 2015-12-31 -T 2016-02-01:从 2016年01月01日T00:00 至 2016年02月01日T23:59:59
      • ggr stat -F 2016-01-01:从 2016年02月01日T00:00 至现在
      • ggr stat -T 2016-02-01:从开始使用 gerrit 以来至 2016年02月01日T23:59:59
    • ggr topic list-s
      列出所有开发分支和仓库。使用 -s 包括分支中的提交,如 git submodule summary

    • ggr topic push[-b] [<BRANCHNAME>]
      将更改推送到 gerrit。不使用 -b 则推送到 gerrit。使用选项 -b 则推送到构建服务器。如果没有分支名称,则推送当前分支。

    • ggr topic renameOLDTOPIC TOPIC
      将 OLDTOPIC 重命名为 TOPIC

      • 使 OLDTOPIC 可选,当前主题被重命名
    • 每个提交的审查者

    • 每个仓库的审查者

    • 分支状态
      显示分支状态(远程和本地,如 git remote show ...

      • ggr 状态[<BRANCHNAME>]
    • 支持 .repo 文件夹

    • 考虑使用 https://github.com/gsingh93/trace

    • 考虑使用 https://github.com/ticki/termion

    • 0.1.11 文档 gerritlib::call 模块

    • 0.1.5 添加 .travis.yml

通过 Docker 在本地主机上创建 gerrit 示例服务器

这创建了一个可通过 https://127.0.0.1:8080 连接的 Docker 容器。服务器设置为开发环境,所有账户都可以执行所有操作。它生成或使用一个包含设置、仓库和 ssh-keys 的 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

许可证

许可下

依赖

~16–25MB
~466K SLoC