两种输入方式
可以传 owner/repo 加 PR 编号,也可以把 owner、repo、PR 编号作为三个参数传入。
面向 GitHub PR patch 流的 Rust CLI
Patchsplit 会下载 GitHub Pull Request 的 .patch 文件,并为每个 commit 写出一个可移植 patch,适合 review、归档、重放或交接。
$ patchsplit openai codex 42 -o pr-42-patches
downloaded https://github.com/openai/codex/pull/42.patch
wrote 2 patch file(s)
pr-42-patches/0001-add-parser.patch
pr-42-patches/0002-wire-cli.patchPatchsplit
它把流程保持得很明确:拉取 Pull Request patch,按 commit 边界拆分,并写出可预测且不会意外覆盖的文件。
可以传 owner/repo 加 PR 编号,也可以把 owner、repo、PR 编号作为三个参数传入。
每个文件使用四位序号加清理后的 commit subject,例如 0001-add-parser.patch。
已存在的输出文件默认会被保护。只有明确传入 --force 时才会替换。
当前实现不引入第三方 Rust crate,并通过系统 curl 命令完成 HTTPS 下载。
Flow
Patchsplit 根据仓库和 PR 编号拼出 GitHub .patch URL。
curl 会跟随跳转、在 HTTP 错误时失败,并带上 patchsplit 版本作为 user agent。
mail patch 中的 From 标记定义 commit 边界;原始单 patch 会保留为一个文件。
默认输出到 patches/,也可以通过 --out 指定目录。
CLI
两种命令形式都可用,再根据需要选择输出目录和覆盖行为。
patchsplit <owner/repo> <pr-number> [--out <dir>] [--force]
patchsplit rust-lang/rust 12345patchsplit <owner> <repo> <pr-number> [--out <dir>] [--force]
patchsplit openai codex 42 -o pr-42-patchesPackages
推送 v* tag 后会为 Linux、macOS、Windows 生成发布包。
tar -xzf patchsplit-linux-x86_64.tar.gz
chmod +x patchsplit
sudo install -m 755 patchsplit /usr/local/bin/patchsplit
patchsplit --versiontar -xzf patchsplit-macos-x86_64.tar.gz
chmod +x patchsplit
sudo install -m 755 patchsplit /usr/local/bin/patchsplit
patchsplit --version
xattr -d com.apple.quarantine /usr/local/bin/patchsplitExpand-Archive .\patchsplit-windows-x86_64.zip -DestinationPath .\patchsplit
.\patchsplit\patchsplit.exe --versionAutomation
推送 v* tag 会触发 GitHub Actions。workflow 会构建 Linux、macOS、Windows 归档文件,并创建一个待检查的 GitHub draft release。
git tag v0.1.0
git push origin v0.1.0