我正在尝试将补丁应用于 Linux 系统上具有 Windows 行结尾的文件,并且由于文件中的回车符而出现冲突。
选项(-l
忽略空格)不会忽略 EOL 字符。有没有办法让补丁忽略windows风格的行尾?
我正在尝试将补丁应用于 Linux 系统上具有 Windows 行结尾的文件,并且由于文件中的回车符而出现冲突。
选项(-l
忽略空格)不会忽略 EOL 字符。有没有办法让补丁忽略windows风格的行尾?
尝试使用手册页中的 --binary 选项(强调我的)
--二进制
以二进制模式写入所有文件,标准输出和 /dev/tty 除外。阅读时,禁用将 CRLF 行尾转换为 LF 行尾的启发式方法。(在符合 POSIX 的系统上,读取和写入永远不会转换行尾。在 Windows 上,默认情况下,读取和写入会转换行尾,当行尾很重要时,补丁应该由 diff --binary 生成。)
我不完全理解上述内容,但它在 Linux 机器上对我有用,可以将 Unix 补丁应用到 DOS 文件上。
这是一个链接http://www.chemie.fu-berlin.de/chemnet/use/info/diff/diff_2.html
--ignore-all-space' 选项忽略差异,
-w' and
即使一个文件有空格>而另一个文件没有空格。空白字符包括制表符、换行符、垂直制表符、>换页符、回车符和空格
运行差异,如:diff -w file1.txt file2.txt
我使用以下命令解决此问题,将所有感兴趣的文件转换为 unix 行结尾。
dos2unix `grep Index\: mixed-line-ending.patch | sed -e 's/Index\://'`
dos2unix mixed-line-ending.patch
patch -p0 < mixed-line-ending.patch
我遇到了这个问题,这个差异是从git diff
控制台输出手动复制并粘贴到带有 LF 的补丁文件中的。要使该补丁文件再次工作 - 能够应用于使用 CR 和 LF 的实际文件 - 必须手动完成几件事:
joe
语法高亮在那里非常有用,因为一旦我修复它们,它就会正确地为大块着色。
告诉patch
忽略空格:
-l, --ignore-whitespace
Causes the pattern matching to be done loosely, in case the tabs
and spaces have been munged in your input file. Any sequence of
whitespace in the pattern line will match any sequence in the
input file. Normal characters must still match exactly. Each
line of the context must still match a line in the input file.
这也忽略了 EOL 的不匹配——至少在 FreeBSD 上,使用patch
版本 2.0-12u11。