Назад | Перейти на главную страницу

Показать файлы для исправления в файле .diff и определить, исправлены они или нет

Иметь .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 файл, и он скажет, исправлено ли дерево или нет.