이것은 내 패치 명령의 출력입니다.
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을 가리 킵니까? 이 문제의 원인을 파악하기 위해 패치 파일에서 무엇을 찾을 수 있습니까?
답변
이 메시지는 Hunk 16을 나타냅니다.
이 GitHub 토론 은 아마도 귀하의 문제와 관련이 있습니다.
그것은 관한 예기치 않게 패치 라인의 중간에 종료 자식 발생하는 차이점이 패치를 사용하는 경우 때문에 CRLF (캐리지 리턴, 라인 피드) 문제의 메시지.
결론을 인용하려면 :
[..] git은 줄 끝에서 매우 까다로울 수 있습니다. 창문에 있습니까? 어쨌든 git config에서 autocrlf를 설정해야합니다. 당신이 윈도우에 있다면, 당신은 “true”를 원하고, 당신이 맥이나 리눅스에 있다면, “input”[..]
줄 끝으로 다루기 기사에서 GitHub는 위의 내용을 자세히 설명합니다.
답변
git
(@maxslepzig의 의견은의 맥락에서 패치를 사용하는 것에 관한 것입니다)을 사용 하지 않는 경우 git
파일 끝에 캐리지 리턴을 추가하십시오. 나는 그것을하고 patch
내 패치를 수락했습니다.
답변
이 오래된 토론에 추가하려면 :
OP가 언급 한 경고로 이어지는 문제는 일반적으로 줄 끝 문제로 인해 발생합니다.
patch
파일의 끝을 결정하기 위해 후행 줄 바꿈 (LF)을 원합니다 (실수로 잘릴 수있는 통합 된 diff를 경고합니다)
-
편집을 위해 파일을 열지 않고 적절한 줄 바꿈을 추가하십시오 (편집기 설정에 따라 줄 끝을 수정하거나 후행 줄 / 공백을 제거 할 수 있음).
echo -e "\n" >> YOURPATCHFILE
이렇게하면 다른 변경없이 파일 끝에 줄 바꿈 문자가 추가됩니다.
-
패치 파일이 이미 이상하거나 한 번에 여러 가지 수정을 수행하려는 경우 줄 끝 (CR 또는 CRLF에서 LF)을 포함하여 인코딩 (아스키)에 대한 많은 문제를 해결할 수 있습니다.
dos2unix -k YOURPATCHFILE
OS의 패키지 관리자에서 dos2unix 바이너리를 설치해야 할 수도 있습니다. 즉
- 데비안 / 우분투 기반 :
sudo apt install dos2unix
- 페도라 / RHEL / CentOS :
sudo yum install dos2unix
- MacOS (brew 포함) :
brew install dos2unix
- 데비안 / 우분투 기반 :