吉特缺陷(git-bug)是一个缺陷追踪器,完全嵌入 git,仅凭仓库使用。它分布式运作,用普通 git 远程仓库协作、推送和拉取缺陷。可离线工作,在飞机或海底也能读写缺陷。避免供应商锁定,常用服务故障时已有完整备份。速度极快,列出或打开缺陷仅需毫秒。不往项目添加文件以免污染,可与 CLI、终端或网页界面集成,或通过 CLI 与 GraphQL API 对接工具,还能桥接其他追踪器导入导出。
正文
git-bug 是一个 bug 追踪器:
- 完全嵌入 git:只需要你的 git 仓库就能拥有 bug 追踪器
- 分布式:使用常规 git remote 协作,推送和拉取你的 bug
- 离线工作:在飞机上或海底?继续读写 bug
- 防止供应商锁定:常用服务宕机或变糟?你已经有完整备份
- 快速:列出或打开 bug 只需毫秒
- 不污染你的项目:项目中不会添加文件
- 与你的工具集成:使用你喜欢的 UI(CLI、终端、Web),或通过 CLI 或 GraphQL API 与现有工具集成
- 桥接到其他 bug 追踪器:使用桥接导入和导出到其他追踪器
安装
完整指南见 INSTALLATION.md,包括如何从源码构建和验证安装。
工作流
有多种使用 git-bug 的方式。详见工作流文档。
原生工作流
这是纯 git-bug 体验。与代码类似,使用 git bug push 和 git bug pull 在 git 远程之间推送和拉取 bug,与队友协作。
桥接工作流
由于 git-bug 有与其他 bug 追踪器的桥接,你可以把它当作个人的本地远程接口。用 git bug bridge pull 和 git bug bridge push 同步,在终端工作,集成到编辑器,随你。而且它能离线工作!
Web UI 工作流(WIP)
项目常需要 bug 追踪器公开,并接受任何遇到问题的人编辑。为支持此工作流,git-bug 旨在让 Web UI 接受外部 OAuth 认证并充当公共门户。不过 Web UI 尚未达到这一点。非常欢迎贡献!
CLI 用法
创建新身份:
git bug user create
创建新 bug:
git bug add
你喜欢的编辑器会打开,用来写标题和消息。
可将新条目推送到远程:
git bug push [<remote>]
拉取更新:
git bug pull [<remote>]
列出已有 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 或阅读该命令文档。
交互式终端 UI
使用命令 git bug termui 可打开交互式终端 UI,浏览和编辑 bug。
Web UI
用 git bug webui 启动丰富的 Web UI。浏览、搜索和过滤 issue,打开新 issue,评论,并编辑标题、标签和状态。它还兼作仓库的代码浏览器,带文件树、语法高亮文件、提交历史和 diff。
Web UI 打包在同一个 go 二进制中,由本地 http 服务器提供。它通过 GraphQL API 与后端通信,schema 可在这里查看。
桥接
git-bug 可以从 Github、Gitlab、Jira 和 Launchpad 导入和导出。每个桥接支持什么见功能矩阵,完整指南见桥接文档。
交互式配置新桥接:
git bug bridge new
或手动:
git bug bridge new --name=<bridge> --target=github --url=https://github.com/git-bug/git-bug --login=<login> --token=<token>
导入 bug:
git bug bridge pull [<name>]
导出修改:
git bug bridge push [<name>]
删除桥接:
git bug bridge rm [<name>]
内部
对工作原理感兴趣?看看数据模型和内部鸟瞰。
磁盘格式在 git-bug spec 中正式规定,涵盖 DAG 实体格式、身份和 bug 实体。如果想写另一个实现或直接读取 git-bug 数据的工具,就读它。
或者你想在 git 中制作自己的分布式数据结构?
另见所有文档。
杂项
计划功能
功能矩阵给出计划概览,但不详尽。
其他计划功能:
- 可作为公共门户、接受用户输入的 WebUI
- 充气迅猛龙
贡献
接受 PR。来 Matrix 房间聊天,查看功能矩阵或浏览 issue 和讨论,了解正在做或讨论什么。
见 CONTRIBUTING.md 搭建开发环境、构建项目并运行测试。要处理 Web UI,看它专门的 README。
评论
社区对 git-bug 普遍流露出兴趣与称赞,但部分人质疑分布式缺陷跟踪器的必要性与低门槛可及性,并指出该类工具其实早有历史且曾受设计制约。
认为项目与 Git 集成巧妙且值得尝试
- 多名用户称赞其概念与外观,认为它良好遵循 Git 工作流并利用其存储,期待试用或已见内核流程中的应用(较多人)。
- > 看起来很棒,我一定会试试(@saadn92 意译)
认为缺陷跟踪器应中心化且需极低门槛
- 有用户指出票据需被各角色广泛编辑查看,任何创建障碍都会减少提交,中心化服务才是理想形态,另有用户以反问调侃“若仓库本无跟踪器”反驳前提(少数人)。
- > 票据需要极其广泛的可见性,任何门槛都会让人不提交,这恰恰是中心化服务的理想场景(@cush 意译)
认为分布式 bug 跟踪器并非新概念且曾受设计局限
- 老用户提醒此类工具十多年前就流行过但因设计理念问题未能普及,且当前已有不少同类项目,几个月前还有类似物发布(较多人)。
- > 十多年前这类工具就涌现过,因设计而非实现问题导致多数人无法实用(@Izkata 意译)
认为“嵌入 Git”表述不准且命名有局限
- 贡献者批评“嵌入”一词误导,实际只是遵循命令命名约定被检索,应称完全集成;另有人觉得“git bug”名字局限了功能联想,虽专注 bug 也略显别扭(少数人)。
- > 说它“嵌入”Git 不如说完全集成准确,嵌入暗示插件加载而非命令行惯例查找(@dustfinger 意译)
有价值的补充
- 可用纯 Git 实现代码审查(如 git-appraise),曾有用户因想念 Markdown 编辑票据而自建了另一工具 ticketry(@imagent 意译)。
- 项目思路疑似借鉴了 fossil-scm 等早期一体化版本控制系统(@lolakutty 意译)。
- 内核社区已通过 b4 与 cgit 演示了对该工具的支撑,显示其在大型项目中已有落地探索(@Aissen 意译)。
- 作者计划引入基于去中心化身份(did:plc,源自 Bluesky 身份体系但非 ATProto)的跨仓库身份共享,并扩展拉取请求与持续集成,意图做成完整本地优先的代码托管平台(@michaelmure 意译)。