Thunderbird Patch Review

在 Thunderbird 内审阅来自邮件的 git 补丁

Synopsis

一个 Thunderbird 附加组件。打开补丁邮件,按下 Review,对 hunks 进行评论,将审阅作为邮件列表回复发送,并使用 git-am(1) 将系列补丁应用到本地仓库。

Screenshots

Fig: Patch button included in plugin
patch-button.png
Fig: Patch overview
thunderbird-patch-overview.png
Fig: Apply patches from the UI.
thunderbird-patch-success.png
Fig: Catch errors and send feedback.
thunderbird-patch-fail.png
Fig: Sourcehut integration.
srht-integration-thunderbird.png

Installation (source)

将扩展源代码打包为 .xpi 文件,然后通过附加组件管理器的齿轮菜单(从文件安装附加组件...)进行安装。要打包,请在项目根目录运行以下命令:

(cd extension && zip -qrX ../patch-review.xpi .)

将来我会在 Thunderbird 中上传此附加组件。

Configuration

打开扩展的首选项:

Editor command

成功应用后从仓库运行,以更改的文件作为参数。使用非阻塞的、支持 GUI 的命令,例如 code -nemacsclient -n;纯终端编辑器没有可打开的终端。留空则使用 $EDITOR

Apply strategy

git am --3way(默认)或纯 git am

Repository mappings

对补丁的 List-Id 标头或发件人进行子串匹配,映射到绝对仓库路径。当没有匹配的映射时,将使用系列补丁最后应用到的路径;该路径会被记住,直到更改为止。

仓库路径可以通过“浏览”按钮选择,该按钮会打开 Thunderbird 的原生目录选择器;无论哪种方式,路径字段都保持可编辑。

Permissions

messagesRead

读取所选邮件及其在同一文件夹中的兄弟补丁(主题、作者、正文),以构建审阅。

accountsRead

解析拥有被审阅邮件的账户的默认身份,用于 From 地址标签和 send-as。

storage

跨重启持久化草稿评论(按 Message-ID 键入),以及编辑器命令、应用策略、仓库映射和最后应用的仓库路径。

compose, (compose.send)

通过“发送审阅”打开回复全部的撰写窗口,并在“立即发送”模式下发送它们。如果没有 compose.send,审阅只能在撰写窗口中预览,无法发送。

downloads

将“下载补丁集 .mbox”写入磁盘。

tabs

打开审阅标签页,并在成功发送后移除它。

特权的“应用”、“浏览...”和“打开编辑器”代码不使用 Mozilla 权限:它是打包在 XPI 内部的 WebExtension 实验(experiment_apis.patchHost),仅在扩展加载时运行。

Sourcehut integration

当系列补丁通过 sourcehut 邮件列表到达时,发送审阅时将出现设置补丁状态标头的选项。它使用 Sourcehut 的邮件控制

Caveats

目前尚不支持以附件形式到达的补丁、仅 HTML 邮件以及从 git 工作树预览进行审阅。系列收集仅搜索打开邮件所在的文件夹。

See also

介绍帖包含一个简短的动机片段。

Disclaimer

此附加组件使用 GLM5.2 通过 vibe coding 完成,旨在解决我团队的需求。我原本犹豫是否分享它,因为我通常不喜欢 vibe-coded 的项目。然而,考虑到生态系统中急需这样的工具,我还是决定分享它。

我没有逐行审阅代码,但我设计了系统应采用的总体方法,并专注于使用尽可能少的依赖项。我还与测试套件一起手动对插件进行了广泛的 Q&A。

Contributing

贡献和错误报告请发送到邮件列表: ~marcc/[email protected]

Author

Marc Coquand