兩種輸入方式
可以傳 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