'Yama beklenmedik bir şekilde çizginin ortasında bitiyor' ne anlama geliyor?


14

Bu yama komutumun çıktısı:

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.

Komut şuydu:

patch -d ~/SOME_DIR -p1 --merge --verbose -u

Yama git kullanılarak üretildi:

git --git-dir ~/SOME_DIR/.git diff -U8 bb1ee538982957b421a4c0e78f30428e73c9a072 HEAD -- malloc.c

Ne anlama patch unexpectedly ends in middle of linegeliyor ve bir sorun mu var? İri parça 16 veya 17'ye mi atıfta bulunuyor? Buna neyin sebep olduğunu bulmak için yama dosyasında ne arayabilirim?

Yanıtlar:


11

Mesaj Hunk 16'yı ifade eder.

Bu GitHub tartışması muhtemelen sorununuzla ilgilidir.

Yaklaşık olduğu beklenmedik yama hattı orta biter git oluşturulan diffs yama ile kullanıldığında çünkü CRLF (Satır başı, satır besleme) konuların mesajlar.

Sonucu alıntılamak için:

[..] git satır sonları konusunda çok seçici olabilir. Pencerede misin, değil misin? Her halükarda, git config içinde autocrlf komutunu ayarlamanız gerekir. Windows kullanıyorsanız, "true" (doğru) istiyorsunuz, mac veya linux kullanıyorsanız, "input" (giriş) kullanmalısınız [..]

Satır sonlarıyla ilgilenme makalesinde GitHub yukarıdaki ifadeyi ayrıntılı olarak açıklar.


1
Unutulmamalıdır ki, anketör bunun kötü olduğunu sordu - bir çizginin ortasına bitmek sorun değil - sadece bir uyarı.
Ross

3

git(@ Maxslepzig'in yorumu yama bağlamında kullanmakla ilgili değilse) kullanmıyorsanız git, dosyanızın sonuna bir satır başı eklemeyi deneyin. Bunu yaptım ve patchyamamı kabul ettim.


2

Bu çok eski tartışmaya eklemek için:

OP'nin not ettiği uyarıya neden olan problem genellikle hat uçlarıyla ilgili problemlerden kaynaklanır.

patch dosyanın sonunu belirlemek için bir sondaki satır beslemesi (LF) istiyor (ve yanlışlıkla kesilmiş olabilecek birleşik farkın uyarılması)

  1. Düzenlemek için dosyayı açmadan uygun satır beslemesini ekleyin (bu, satır sonlarınızı değiştirebilir veya düzenleyicinizin ayarlarına bağlı olarak sondaki satırları / boşlukları şeritleyebilir) aşağıdaki gibi basit bir şey yapabilirsiniz:

    echo -e "\n" >> YOURPATCHFILE

    Bu, başka hiçbir değişiklik yapmadan dosyanın sonuna satır besleme karakteri ekler.

  2. Yama dosyanız zaten garipse veya aynı anda birkaç olası düzeltmeden geçmek istiyorsanız, satır sonları (CR veya CRLF - LF) dahil olmak üzere kodlama (ascii'ye) ile ilgili birçok sorunu düzeltebilirsiniz:

    dos2unix -k YOURPATCHFILE

    Dos2unix ikili dosyasını işletim sisteminizin paket yöneticisinden kurmanız gerekebilir; yani

    • Debian / Ubuntu tabanlı: sudo apt install dos2unix
    • Fedora / RHEL / CentOS: sudo yum install dos2unix
    • MacOS (demlemeli): brew install dos2unix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.