Hacker News 中文摘要

RSS订阅

Git-bug:嵌入 Git 的分布式离线优先 bug 追踪器 -- Git-bug: Distributed, offline-first bug tracker embedded in Git

吉特缺陷(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 意译)。