#patch #diff #file-comparison #executable-patch

app diffpatch

A tool to compare directories and create executable patches

3 releases

Uses new Rust 2024

new 0.1.2 Mar 25, 2025
0.1.1 Mar 25, 2025
0.1.0 Mar 22, 2025

#127 in #patch

Download history 82/week @ 2025-03-17

82 downloads per month

GPL-3.0 license

42KB
717 lines

DiffPatch

一个用Rust编写的目录比较工具,可以生成可执行的补丁文件。

Features

  • 对比两个目录的文件差异
  • 生成可执行的补丁文件(.exe)
  • 补丁文件运行时会先验证目标目录是否正确
  • 支持指定必要的验证文件,确保补丁应用在正确的目录中
  • 支持排除特定后缀名的文件或特定文件夹
  • 高效的文件差异提取和应用
  • 利用并行处理加速大型目录的比较和补丁应用
  • 智能I/O优化,避免过度并行导致的磁盘瓶颈

Usage

Create Patch

diffpatch create --source <未修改的目录> --target <修改后的目录> --output <补丁文件名> --check-files <验证文件1,验证文件2,...> --exclude-extensions <排除文件后缀名1,排除文件后缀名2,...> --exclude-dirs <排除文件夹1,排除文件夹2,...>

排除特定文件或文件夹

可以使用以下参数排除特定类型的文件或特定文件夹:

# 排除特定后缀名的文件
--exclude-extensions .tmp,.bak,.i64,.psd

# 排除特定文件夹
--exclude-dirs test,build

性能调优

可以通过环境变量控制I/O并行度,特别是在处理大型目录时:

# 设置文件I/O并行线程数(默认为CPU核心数和4之间的较小值)
# 对于高性能SSD,可以增加此值;对于机械硬盘,减小此值可能会更有效
export DIFFPATCH_IO_THREADS=2
diffpatch create --source ... --target ...

Apply Patch

将生成的补丁文件放到需要更新的目录中,双击运行即可。补丁程序会先验证目录是否正确,然后利用并行处理快速应用文件更改。

Performance

通过利用多核处理器的并行处理能力,DiffPatch能够:

  • 显著加快大型目录的扫描和比较速度
  • 并行处理文件哈希计算,提高比较效率
  • 并行提取和复制文件,加速补丁创建和应用过程
  • 充分利用现代多核CPU提高整体性能
  • 智能控制I/O并行度,避免过度并行导致的磁盘瓶颈
  • 使用缓冲读取优化文件哈希计算

Build

cargo build --release

编译后的可执行文件将位于 target/release/ 目录中。

Dependencies

~14–25MB
~383K SLoC