ESC
开源 1 分钟阅读

Git-bug:嵌入 Git 的分布式、离线优先 bug 追踪器

git-bug 是一个嵌入 Git 的分布式、离线优先 bug 追踪器开源项目,提供命令行、交互式终端 UI 和 Web UI 三种使用方式,通过 GraphQL API 与后端通信,并支持与 GitHub、Gitlab、Jira、Launchpad 双向同步 bug。其磁盘数据格式由 git-bug spec 正式规范定义,便于第三方实现兼容工具。

来源:Hacker News

通常,项目需要将其 bug 追踪器公开,并接受任何遇到问题的人提交的编辑。为支持这一工作流,git-bug 旨在让 Web UI 支持外部 OAuth 认证,并充当公共门户。不过 Web UI 目前尚未达到这一水平,非常欢迎社区贡献!

git bug add

你喜欢的编辑器将会打开,用于撰写标题和消息。

git bug push []

拉取更新:

git bug pull []

列出现有 bug:

git bug ls

使用查询语言过滤和排序 bug:

git bug ls “status:open sort:edit”

按文本内容搜索 bug:

git bug ls “foo bar” baz

你现在可以使用 show、comment、open 或 close 等命令来查看和修改 bug。有关每个命令的更多细节,可以运行 git bug <command> --help 或阅读相应命令的文档。

可以使用命令 git bug termui 启动交互式终端 UI 来浏览和编辑 bug。

你可以通过 git bug webui 启动功能丰富的 Web UI。浏览、搜索和过滤 issue、开启新 issue、发表评论,以及编辑标题、标签和状态。它还可以兼作仓库的代码浏览器,提供文件树、语法高亮的文件、提交历史和 diff。

Web UI 打包在同一个 go 二进制文件中,由本地 http 服务器提供服务。它通过 GraphQL API 与后端通信,其 schema 可在此处查看。

git-bug 支持与 Github、Gitlab、Jira 和 Launchpad 之间相互导入和导出。请参阅功能矩阵了解各个桥接(bridge)所支持的特性,以及桥接文档获取完整使用指南。

git bug bridge new
–name=
–target=github
–url=https://github.com/git-bug/git-bug
–login=
–token=

导入 bug:

git bug bridge pull []

导出修改:

git bug bridge push []

删除桥接:

git bug bridge rm []

内部原理

对它的实现原理感兴趣?请查看数据模型和内部架构概览。

磁盘存储格式在 git-bug spec 中有正式规范,涵盖 DAG 实体格式、身份(identity)和 bug 实体。如果你想编写其他实现,或开发直接读取 git-bug 数据的工具,请阅读该文档。

或者,你也许想尝试在 git 中创建自己的分布式数据结构?

计划中的功能

功能矩阵很好地概述了计划中的各项功能,但并非详尽无遗。