#linux #ant #newline #patch #line-endings
#linux #ant #новая строка #исправление #окончания строк
Вопрос:
Как мы можем…
- используйте исправление задачи Ant в Linux для исправления файлов с переводами строк DOS?
- примените параметр командной строки
--binary
с исправлением задачи Ant?
Смотрите подробности ниже.
Файлы
- build.xml : Файл сборки Ant с задачей исправления
- test.patch: файл исправления с переводами строк DOS
- test.txt : исходный файл с переводами строк DOS
Сбой командной строки patch
Переводы строк DOS в файле исправления преобразуются в переводы строк Unix, и исправление завершается неудачей:
[0] mypc<u0>:~/src/test/ant_patch_crlf>patch -i test.patch
(Stripping trailing CRs from patch; use --binary to disable.)
patching file test.txt
Hunk #1 FAILED at 1 (different line endings).
1 out of 1 hunk FAILED -- saving rejects to file test.txt.rej
Командная строка patch --binary
работает нормально
Как было предложено выше
use --binary to disable
добавление опции --binary
помогает:
[0] mypc<u0>:~/src/test/ant_patch_crlf>patch --binary -i test.patch
patching file test.txt
Ant task patch
завершается с ошибкой
Задача Ant patch
завершается с той же ошибкой, что и командная строка без опции --binary
:
[0] mypc<u0>:~/src/test/ant_patch_crlf>ant
Buildfile: /home/u0/src/test/ant_patch_crlf/build.xml
patch:
[patch] (Stripping trailing CRs from patch; use --binary to disable.)
[patch] patching file test.txt
[patch] Hunk #1 FAILED at 1 (different line endings).
[patch] 1 out of 1 hunk FAILED -- saving rejects to file test.txt.rej
[patch] 'patch' failed with exit code 1
BUILD SUCCESSFUL
Total time: 0 seconds
Комментарии:
1. Задача Ant является оболочкой для исполняемого файла path, отсюда и наблюдаемое вами поведение. Задача Ant не имеет возможности передать параметр —binary. Вы могли бы рассмотреть возможность использования задачи Ant exec вместо этого, чтобы обернуть исправление командной строки и включить необходимые параметры.