Можно ли использовать Ant task «patch» в Linux для исправления файлов с переводами строк DOS?

#linux #ant #newline #patch #line-endings

#linux #ant #новая строка #исправление #окончания строк

Вопрос:

Как мы можем…

  1. используйте исправление задачи Ant в Linux для исправления файлов с переводами строк DOS?
  2. примените параметр командной строки --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 вместо этого, чтобы обернуть исправление командной строки и включить необходимые параметры.