Pau*_*gar 16 command-line diff
这是我的补丁命令的输出:
Hunk #11 merged at 4184,4190.
Hunk #12 merged at 4444.
Hunk #13 merged at 4944.
Hunk #14 NOT MERGED at 5106-5116.
Hunk #15 merged at 5290.
Hunk #16 merged at 5448.
patch unexpectedly ends in middle of line
Hunk #17 merged at 5608,5611.
Run Code Online (Sandbox Code Playgroud)
命令是
patch -d ~/SOME_DIR -p1 --merge --verbose -u
Run Code Online (Sandbox Code Playgroud)
该补丁是使用 git 生成的:
git --git-dir ~/SOME_DIR/.git diff -U8 bb1ee538982957b421a4c0e78f30428e73c9a072 HEAD -- malloc.c
Run Code Online (Sandbox Code Playgroud)
是什么patch unexpectedly ends in middle of line
意思,有什么问题吗?它指的是大块 16 还是 17?我可以在补丁文件中寻找什么来找出导致这种情况的原因?
max*_*zig 11
该消息指的是 Hunk 16。
这个GitHub 讨论可能与您的问题有关。
它是关于贴片意外中间线的端部时产生的GIT中的diff与补丁使用,因为CRLF(回车,换行)问题的消息。
引用结论:
[..] git 对行尾可能非常挑剔。你在窗户上还是不在窗户上?无论如何,您应该在 git 配置中设置 autocrlf。如果你在 windows 上,你想要“true”,如果你在 mac 或 linux 上,你应该使用“input”[..]
在GitHub处理行尾一文中详细介绍了上述声明。
小智 5
添加到这个非常古老的讨论:
导致OP指出的警告的问题通常是由行结尾问题引起的。
patch
需要尾随换行符 (LF) 以确定文件结尾(并警告可能被意外截断的统一差异)
附加正确的换行符而不打开文件进行编辑(这可能会修改行尾或根据编辑器的设置删除尾随行/空格),您可以执行以下简单操作:
echo -e "\n" >> YOURPATCHFILE
这会将换行符附加到文件末尾,而不进行任何其他更改。
如果您的补丁文件已经很奇怪或者您想一次进行多个可能的修复,您可以通过编码(到 ascii)纠正许多问题,包括行结尾(CR 或 CRLF 到 LF):
dos2unix -k YOURPATCHFILE
您可能需要从操作系统的包管理器安装 dos2unix 二进制文件;IE
sudo apt install dos2unix
sudo yum install dos2unix
brew install dos2unix