Иметь .diff
файл патча, я пытаюсь выполнить действия в сценарии оболочки в зависимости от того, файлы ли перечислены в .diff
являются: 1) уже исправленными, 2) не исправленными, 3) не подлежащими исправлению.
Я не нашел в GNU Patch возможности отображать эту информацию в неинтерактивном режиме.
Также было бы полезно знать, какие файлы нужно исправить, не исправляя их. Кажется, это проще фильтровать .diff
файл, но было бы здорово, если бы в GNU Patch были эти функции.
Какие-то предложения по этому поводу?
Я нашел решение.
Чтобы показать список файлов для обработки: 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
файл, и он скажет, исправлено ли дерево или нет.