Ini adalah output dari perintah patch saya:
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.
Perintahnya adalah
patch -d ~/SOME_DIR -p1 --merge --verbose -u
Patch diproduksi menggunakan git:
git --git-dir ~/SOME_DIR/.git diff -U8 bb1ee538982957b421a4c0e78f30428e73c9a072 HEAD -- malloc.c
Apa patch unexpectedly ends in middle of line
maksudnya, dan apakah itu masalah? Apakah ini mengacu pada sebongkah 16 atau 17? Apa yang bisa saya cari di file tambalan untuk mencari tahu apa yang menyebabkan ini?
sumber
Jika Anda tidak menggunakan
git
(komentar @ maxslepzig tentang penggunaan tambalan dalam konteksgit
), coba tambahkan carriage return di akhir file Anda. Saya melakukan itu danpatch
menerima tambalan saya.sumber
Untuk menambah diskusi yang sangat lama ini:
Masalah yang mengarah pada peringatan yang dicatat OP umumnya disebabkan oleh masalah dengan akhiran garis.
patch
ingin feed garis trailing (LF) untuk menentukan akhir file (dan memperingatkan diff terpadu yang mungkin telah terpotong secara tidak sengaja)Tambahkan linefeed yang tepat tanpa membuka file untuk diedit (yang mungkin memodifikasi akhir baris Anda atau menghapus garis / spasi tergantung pada pengaturan editor Anda) Anda dapat melakukan sesuatu yang sederhana seperti:
echo -e "\n" >> YOURPATCHFILE
Ini menambahkan karakter linefeed ke akhir file tanpa membuat perubahan lain.
Jika file tambalan Anda sudah aneh atau Anda ingin melalui beberapa kemungkinan perbaikan sekaligus, Anda dapat memperbaiki banyak masalah dengan penyandian (ke ascii) termasuk akhiran baris (CR atau CRLF ke LF):
dos2unix -k YOURPATCHFILE
Anda mungkin harus menginstal biner dos2unix dari manajer paket OS Anda; yaitu
sudo apt install dos2unix
sudo yum install dos2unix
brew install dos2unix
sumber