在 .diff 文件上显示要修补的文件并确定它们是否已被修补

在 .diff 文件上显示要修补的文件并确定它们是否已被修补

有了.diff修补文件后,我尝试在 shell 脚本中采取行动,具体取决于.diff文件中列出的文件是否:1)已修补,2)未修补,3)不可修补。

我发现 GNU Patch 上没有办法以非交互方式显示此信息。

无需修补文件即可知道需要修补哪些文件,这也很有用。这似乎更容易过滤文件,.diff但如果 GNU Patch 有这些功能就更好了。

对此有什么建议吗?

答案1

我找到解决办法了。

显示要处理的文件列表:lsdiff来自 patchutils。

为了确定树的补丁状态,我编写了这个 sh 函数:

checkpatch(){
 local normal reverso file

 file="$1"

 patch -p1 --dry-run -fNs < "$file" &>/dev/null && normal=0 || normal=1
 patch -p1 --dry-run -fRs < "$file" &>/dev/null && reverso=0 || reverso=1

 if [ "$normal" == "1" ] && [ "$reverso" == "1" ]; then
    echo Error ; return 2
 else
    if [ "$normal" == "0" ]; then
       echo Not patched ; return 1
    else
       echo Patched ; return 0
    fi
 fi
}

使用checkpatch后跟一个.diff文件,它会告诉你树是否被修补。

相关内容