# AscendPatch **Repository Path**: geniusfu/ascend-patch ## Basic Information - **Project Name**: AscendPatch - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-11 - **Last Updated**: 2025-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1. 文件名排除功能 默认排除: RECORD 文件名 可自定义: 通过 -n 或 --exclude-names 参数指定要排除的文件名 精确匹配: 只匹配完全相同的文件名 2. .json文件排除 默认排除: 所有 .json 文件 可选包含: 使用 --include-json 参数可以包含.json文件 3. 增强的命令行参数 bash # 使用默认排除规则(排除.o,.so,.bin,.pyc,.json文件和RECORD文件名) python dir_compare.py original modified -o patch_output # 自定义排除文件名 python dir_compare.py original modified -n RECORD LICENSE README # 包含.json文件 python dir_compare.py original modified --include-json # 完全自定义排除规则 python dir_compare.py original modified -e .o .so .tmp .log -n RECORD BACKUP 4. 使用示例 python # 示例:使用自定义排除规则 from directory_comparator import DirectoryComparator # 排除特定文件类型和文件名 comparator = DirectoryComparator( "./original", "./modified", "./patch_output", exclude_patterns=['.o', '.so', '.bin', '.pyc', '.json', '.tmp'], exclude_filenames=['RECORD', 'LICENSE', 'README.md'] ) differences, zip_path = comparator.run_comparison() 5. 程序输出示例 text 开始比较目录: 基准目录: ./original 修改目录: ./modified 输出目录: ./patch_output 排除的文件类型: .o, .so, .bin, .pyc, .json 排除的文件名: RECORD 正在扫描目录结构... 跳过文件: package.json (符合排除规则) 跳过文件: build/RECORD (符合排除规则) 跳过文件: lib/test.o (符合排除规则) 找到 15 个文件需要比较 ... 应用补丁很简单,程序已经自动生成了补丁应用脚本。以下是详细的应用方法: 方法一:使用自动生成的补丁脚本 1. 找到补丁文件 在生成的补丁输出目录中,你会找到以下文件: text patch_output/ ├── added_files/ # 新增的文件 ├── modified_files/ # 修改的文件 ├── deleted_files/ # 删除文件标记 ├── patch_info.json # 补丁信息 └── apply_patch.py # 补丁应用脚本 ← 使用这个 2. 应用补丁 bash # 进入补丁目录 cd patch_output # 应用补丁到目标目录 python apply_patch.py /path/to/target_directory 示例: bash # 假设目标目录是 /home/user/myproject python apply_patch.py /home/user/myproject # 或者相对路径 python apply_patch.py ../myproject 方法二:手动应用补丁(如果需要更多控制) 你也可以手动查看补丁内容并选择性应用: 1. 查看补丁信息 bash # 查看补丁摘要 cat patch_output/patch_info.json | python -m json.tool 2. 手动复制文件 bash # 复制新增的文件 cp -r patch_output/added_files/* /path/to/target/ # 复制修改的文件 cp -r patch_output/modified_files/* /path/to/target/ # 处理删除的文件(根据deleted_files中的标记手动删除) 方法三:使用ZIP补丁包 如果生成了ZIP文件,先解压再应用: bash # 解压补丁包 unzip patch_20231201_143022.zip -d patch_temp # 进入解压目录应用补丁 cd patch_temp python apply_patch.py /path/to/target_directory # 清理临时文件 cd .. rm -rf patch_temp 实际应用示例 假设你有以下场景: bash # 1. 生成补丁 python dir_compare.py /old/version /new/version -o /tmp/patch # 2. 查看生成的补丁内容 ls -la /tmp/patch/ # 3. 查看补丁信息 cat /tmp/patch/patch_info.json # 4. 应用补丁到生产环境 cd /tmp/patch python apply_patch.py /var/www/myapp # 5. 验证应用结果 echo "补丁应用完成!" 应用补丁脚本的详细输出 当你运行补丁应用脚本时,会看到类似这样的输出: text 开始应用补丁... 排除的文件类型: .o, .so, .bin, .pyc, .json 排除的文件名: RECORD 跳过文件 (排除规则): config.json 更新文件: src/main.py 新增文件: src/utils.py 跳过删除 (排除规则): build/test.o 删除文件: old_module.py 补丁应用完成! 应用更改: 3 个文件 跳过文件: 2 个 (排除规则) 注意事项 备份重要数据:在应用补丁前,建议备份目标目录 权限检查:确保有权限读写目标目录 排除规则一致性:应用补丁时会自动跳过排除的文件类型,确保与生成补丁时一致 验证结果:应用后检查关键文件是否正确更新 高级用法:批量应用补丁 如果需要批量应用到多个环境,可以编写脚本: bash #!/bin/bash # deploy_patch.sh PATCH_DIR="/tmp/patch" TARGET_DIRS=( "/var/www/environment1" "/var/www/environment2" "/home/user/test_env" ) for target in "${TARGET_DIRS[@]}"; do echo "正在应用补丁到: $target" cd "$PATCH_DIR" python apply_patch.py "$target" echo "完成: $target" echo "---" done 这样就能轻松地将补丁应用到多个目标目录了!