有了.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
文件,它会告诉你树是否被修补。