Esta é a saída do meu comando 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.
O comando foi
patch -d ~/SOME_DIR -p1 --merge --verbose -u
O patch foi produzido usando o git:
git --git-dir ~/SOME_DIR/.git diff -U8 bb1ee538982957b421a4c0e78f30428e73c9a072 HEAD -- malloc.c
O que patch unexpectedly ends in middle of line
significa e é um problema? Refere-se ao pedaço 16 ou 17? O que posso procurar no arquivo de patch para descobrir o que está causando isso?
fonte
Se você não estiver usando
git
(o comentário de @ maxslepzig foi sobre o uso de patch no contexto degit
), tente adicionar um retorno de carro no final do seu arquivo. Eu fiz isso epatch
aceitei o meu patch.fonte
Para adicionar a essa discussão muito antiga:
O problema que levou ao aviso observado pelo OP geralmente é causado por problemas com terminações de linha.
patch
deseja um feed de linha à direita (LF) para determinar o final do arquivo (e avisa sobre um diff unificado que pode ter sido acidentalmente truncado)Anexe o avanço de linha adequado sem abrir o arquivo para edição (o que pode modificar as terminações de sua linha ou remover linhas / espaços à direita, dependendo das configurações do seu editor), você pode fazer algo simples como:
echo -e "\n" >> YOURPATCHFILE
Isso anexa um caractere de avanço de linha ao final do arquivo sem fazer outras alterações.
Se o seu arquivo de correção já estiver estranho ou você desejar realizar várias correções possíveis ao mesmo tempo, poderá corrigir muitos problemas com a codificação (para ascii), incluindo as terminações de linha (CR ou CRLF para LF):
dos2unix -k YOURPATCHFILE
Pode ser necessário instalar o binário dos2unix a partir do gerenciador de pacotes do seu sistema operacional; ie
sudo apt install dos2unix
sudo yum install dos2unix
brew install dos2unix
fonte