有一个.diff补丁文件,我试图在shell脚本中执行操作,具体取决于.diff文件中列出的文件是否:1)已被修补,2)未修补,3)不可修补。
我发现没有办法在GNU Patch上以非交互的方式显示这些信息。
也知道哪些文件将被修补而不修补它们将是有用的。 这似乎更容易过滤.diff文件,但是如果GNU Patch具有这些function,那将会很好。
对此有一些build议?
我find了一个解决scheme。
要显示要处理的文件列表:来自patchutils的lsdiff 。
为了确定树的补丁状态,我写了这个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文件,它会说树是否被修补。