#patch-file #patch #cargo #dependencies #patchfile

bin+lib patch-crate

patch-crate 允许 Rust 开发者即时创建并保持对 Rust crate 依赖的修复。它是那些生活在尖端的人的救命稻草。

10 个版本

0.1.10 2024 年 7 月 27 日
0.1.9 2023 年 12 月 16 日
0.1.6 2023 年 11 月 6 日
0.1.5 2023 年 10 月 27 日

687命令行实用工具

Download history 45/week @ 2024-05-03 78/week @ 2024-05-10 75/week @ 2024-05-17 110/week @ 2024-05-24 147/week @ 2024-05-31 66/week @ 2024-06-07 79/week @ 2024-06-14 90/week @ 2024-06-21 45/week @ 2024-06-28 62/week @ 2024-07-05 61/week @ 2024-07-12 47/week @ 2024-07-19 308/week @ 2024-07-26 119/week @ 2024-08-02 98/week @ 2024-08-09 122/week @ 2024-08-16

每月 659 次下载

MIT 许可协议

27KB
305 代码行

Patch-Crate

patch-crate 允许 Rust 应用程序开发者即时创建并保留对 Rust crate 依赖的修复。它是那些生活在尖端的人的救命稻草。

# fix a bug in one of your dependencies
vim target/patch/brokencrate

# run patch-crate to create a .patch file
cargo patch-crate some-crate

# commit the patch file to share the fix with your team
git add patches/some-crate+3.14.15.patch
git commit -m "fix broken_file.rs in some-crate"

请查看我们的示例:[这里](https://github.com/mokeyish/cargo-patch-crate-example)

开始使用

  1. 安装命令 patch-crate

    cargo install patch-crate
    
  2. 在 Cargo.toml 中添加损坏的 crate

    
    [package.metadata.patch]
    crates = ["some-crate"]
    
    [patch.crates-io]
    some-crate = { path="./target/patch/some-crate-1.0.110" }
    
  3. 将 crate 的源代码下载到 target/patch

    cargo patch-crate
    
  4. 直接在 target/patch/some-crate 中修复损坏的代码。

  5. 创建 crate-patch

    cargo patch-crate some-crate
    
  6. 提交补丁文件以与团队分享修复

    git add patches/some-crate+1.0.110.patch
    git commit -m "fix broken-code in some-crate"
    
  7. 除了运行 cargo patch-crate,还可以添加一个 build.rs 文件,如下所示

    fn main() {
       println!("cargo:rerun-if-changed=Cargo.toml");
       patch_crate::run().expect("Failed while patching");
    }
    

    要使其正常工作,请将 patch-crate 库添加到构建依赖项中

    patch-crate = "0.1"
    

命令解释

  • cargopatch-crate

    ./patches 中的补丁文件应用到 ./target/patch/crate-xxx,如果不存在则创建。

  • cargopatch-crate --force

    清理 ./target/patch/ 并将 ./patches 中的补丁文件应用到 ./target/patch/crate-xxx

  • cratepatch-crate <cratename1> <cratename2> ...

    ./target/patch/crate-xxx 创建特定 crate 的补丁文件并保存到 ./patches

致谢

许可证

许可协议为以下之一

任选其一。

依赖项

~85MB
~1.5M SLoC