利用AI生成批量导出内核patch的脚本

最近在使用IMA知识库,希望可以把Linux内核的修改历史全部放进去,方便对内核的研究,下面是一个参考脚本,它实现了如下功能:

将主线master上的tag全部列出,然后进行一些过滤和排序,最后得到一个tag列表。接着,对这个tag列表进行处理,将其中每2个tag之间的提交分别存放到对应的路径下,最后添加.txt后缀,因为目前IMA可以识别txt格式文件。

generate_patches.sh
#!/bin/bash

tags=($(git tag --sort=v:refname --merged | grep '^v' | grep -v "\-rc*"))

for ((i = 0; i < ${#tags[@]} - 1; i++)); do
        echo ${tags[i]}
done

if [ ${#tags[@]} -lt 2 ]; then
    echo "need 2 tag at lest"
    exit 1
fi

patch_dir="tag_patches"
mkdir -p "$patch_dir"

for ((i = 0; i < ${#tags[@]} - 1; i++)); do
    start_tag=${tags[i]}
    end_tag=${tags[i+1]}

    range_dir="${patch_dir}/${start_tag}..${end_tag}"
    mkdir -p "$range_dir"

    echo "Generating: $start_tag..$end_tag"

    git format-patch \
        -o "$range_dir" \
        --no-signature \
        --no-numbered \
        --start-number 1 \
        "${start_tag}..${end_tag}"

    find "$range_dir" -type f -name '*.patch' | while read -r file; do
        mv "$file" "${file%.patch}.txt"
    done
done

echo "End, saved to $patch_dir"`

posted @ 2025-07-08 20:35  dolinux  阅读(31)  评论(0)    收藏  举报