您尚未登录。

楼主 # 2025-08-17 12:08:30

ctrlx
会员
注册时间: 2020-03-13
已发帖子: 2
积分: 2

厂家给出的一堆patch如何打

下载的官方sdk往往伴随着一堆patch,数了一下有几十个,不同目录。

想请教下,这些patch怎么能批量执行...你们都是怎么打这些patch的...

离线

#1 2025-08-17 23:47:33

leen
会员
注册时间: 2025-08-10
已发帖子: 5
积分: 15

Re: 厂家给出的一堆patch如何打

一般都是手工比对着合入patch,不建议跑脚本自动合入,除非你能确定patch的目标文件版本是相同的。

离线

#2 2025-08-18 09:51:41

zhangjink
会员
注册时间: 2020-07-02
已发帖子: 49
积分: 171

Re: 厂家给出的一堆patch如何打

我一般在官方SDK上打补丁,打完之后用Beyond Compare对比着同步到自己修改过的SDK上。下面是找AI写的批量打补丁的脚本,脚本需要放到补丁的patch_files目录下执行。目前仅在V851S的SDK使用过,其它型号的不确定是否有问题哈。

#!/bin/bash

# 校验命令行参数
if [ $# -ne 1 ]; then
    echo "用法: $0 <b目录路径>"
    exit 1
fi

# 脚本所在目录(a目录)
dir_a="$(cd "$(dirname "$0")" && pwd)"

# 传入的b目录路径(可能是相对路径或绝对路径)
input_dir_b="$1"

# 将b目录路径转换为绝对路径
if [ -d "$input_dir_b" ]; then
    dir_b="$(cd "$input_dir_b" && pwd)"
else
    echo "错误: 目标目录不存在或不是目录: $input_dir_b"
    exit 1
fi

# 遍历a目录下所有.patch文件
find "$dir_a" -type f -name "*.patch" | while read -r patch_path; do
    # 计算相对路径(相对于a目录)
    relative_path="${patch_path#$dir_a/}"

    # 目标路径
    target_path="$dir_b/$relative_path"

    # 创建目标目录(如果不存在)
    target_dir=$(dirname "$target_path")
    mkdir -p "$target_dir"

    # 拷贝patch
    cp "$patch_path" "$target_path"

    # 进入patch所在目录执行git am
    cd "$target_dir" || { echo "切换目录失败: $target_dir"; exit 1; }

    echo "正在应用patch: $(basename "$target_path")"
    git am --keep-cr "$(basename "$target_path")"

    # 判断git am是否成功
    if [ $? -eq 0 ]; then
        rm -f "$(basename "$target_path")"
        echo "patch应用成功并已删除:$(basename "$target_path")"
    else
        echo "patch应用失败,patch未删除:$(basename "$target_path")"
    fi

    # 返回脚本执行目录
    cd "$dir_a" || exit 1
done

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn