这是我的 patch 命令的输出:
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.
命令是
patch -d ~/SOME_DIR -p1 --merge --verbose -u
该补丁是使用 git 生成的:
git --git-dir ~/SOME_DIR/.git diff -U8 bb1ee538982957b421a4c0e78f30428e73c9a072 HEAD -- malloc.c
是什么patch unexpectedly ends in middle of line
意思?这是一个问题吗?它指的是猛男16还是17?我可以在补丁文件中查找什么来找出导致此问题的原因?
答案1
答案2
如果您不使用git
(@maxslepzig 的评论是关于在 的上下文中使用 patch git
),请尝试在文件末尾添加回车符。我这样做了并patch
接受了我的补丁。
答案3
添加到这个非常古老的讨论:
导致OP指出的警告的问题通常是由行结尾问题引起的。
patch
想要尾随换行符 (LF) 以确定文件结尾(并警告可能被意外截断的统一差异)
附加正确的换行符而不打开文件进行编辑(这可能会修改行尾或根据编辑器的设置删除尾随行/空格),您可以执行以下简单操作:
echo -e "\n" >> YOURPATCHFILE
这会将换行符附加到文件末尾,而不进行任何其他更改。
如果您的补丁文件已经很奇怪或者您想一次进行多个可能的修复,您可以通过编码(到 ascii)纠正许多问题,包括行结尾(CR 或 CRLF 到 LF):
dos2unix -k YOURPATCHFILE
您可能需要从操作系统的包管理器安装 dos2unix 二进制文件; IE
- 基于 Debian/Ubuntu:
sudo apt install dos2unix
- Fedora/RHEL/CentOS:
sudo yum install dos2unix
- MacOS(带brew):
brew install dos2unix
- 基于 Debian/Ubuntu: