Apa yang dimaksud dengan "1 baris menambahkan kesalahan spasi" saat menerapkan tambalan?

105

Saya mengedit beberapa file penurunan harga dari repositori jarak jauh kloning, dan ingin menguji pembuatan dan penerapan patch dari satu cabang ke cabang lainnya. Namun, setiap kali saya membuat perubahan apa pun, saya mendapatkan pesan berikut selama git apply:

0001-b.patch:16: trailing whitespace.
warning: 1 line adds whitespace errors.

(Ini terjadi di Mac saya, dan saya tidak tahu di mana kode asli dibuat.)

Apa arti pesan peringatan tersebut, dan apakah saya perlu berhati-hati?

Yarin
sumber
1
Terkait ("mengapa?"): Stackoverflow.com/questions/1583406/…
Siput mekanis

Jawaban:

126

Anda tidak perlu peduli.

Peringatan memberlakukan standar kebersihan file teks terkait dengan spasi, hal yang cenderung dipedulikan oleh banyak pemrogram. Seperti yang dijelaskan manual :

Apa yang dianggap kesalahan spasi putih dikendalikan oleh konfigurasi core.whitespace. Secara default, spasi putih tambahan (termasuk baris yang hanya terdiri dari spasi putih) dan karakter spasi yang segera diikuti oleh karakter tab di dalam indentasi awal baris dianggap sebagai kesalahan spasi.

Secara default, perintah mengeluarkan pesan peringatan tetapi menerapkan tambalan.

Jadi, "error" berarti bahwa perubahan tersebut memasukkan spasi kosong, baris hanya spasi, atau spasi sebelum tab. Selain fakta itu, tidak ada yang salah tentang perubahan tersebut, dan itu akan berlaku dengan rapi dan benar. Dengan kata lain, jika Anda tidak peduli dengan ruang kosong yang "salah", abaikan peringatan atau matikan dengan git config apply.whitespace nowarn.

pengguna4815162342
sumber
12
Lihatlah komit dengan git show- jika git Anda berwarna, Anda akan melihat spasi putih yang menyinggung muncul dalam warna merah marah. Juga, git show --word-diffakan menunjukkan kepada Anda tidak hanya perubahan baris, tetapi sisipan di tengah baris, yang seharusnya menunjukkan apakah tambalan benar-benar hanya menambahkan kata di tengah, atau jika itu juga menambahkan spasi kosong.
pengguna4815162342
12
Anda tidak perlu peduli. Tapi kau harus. Trailing whitespace harus diberantas.
funroll
1
Kecuali OP tidak menambahkan spasi kosong baru, hanya mengubah apa yang sudah ada.
pengguna4815162342
4
Saya telah melihat penyangga ini dalam situasi yang sama ketika ujung baris adalah CRLF gaya Windows, bukan yang Unix.
Ezequiel Muns
1
@Yarin Jika Anda menambahkan kata di tengah baris, dan baris tersebut sudah memiliki spasi kosong, itu dapat memicu peringatan.
Warren Dew
4

Satu kasus ketika Anda benar-benar peduli adalah ketika Anda ingin membedakan antara kesalahan spasi putih "lama" (yang mungkin ingin Anda simpan karena alasan lama) dan kesalahan spasi putih "baru" (yang ingin Anda hindari).

Oleh karena itu, Git 2.5+ (Q2 2015) akan mengusulkan opsi yang lebih spesifik untuk deteksi spasi.

Lihat komit 0e383e1 , 0ad782f , dan d55ef3e [26 Mei 2015] oleh Junio ​​C Hamano ( gitster) .
(Digabung oleh Junio di commit 709cd91 , 11 Jun 2015)

diff.c: --ws-error-highlight=<kind>opsi

Secara tradisional, kami hanya peduli tentang kerusakan spasi putih yang diperkenalkan di baris baru.
Beberapa orang ingin melukis kerusakan spasi putih pada garis lama juga. Saat mereka melihat kerusakan spasi putih pada baris baru, mereka dapat melihat kerusakan spasi putih yang sama pada baris lama yang sesuai dan ingin mengatakan "Ah, kerusakan itu ada tetapi diwarisi dari aslinya, jadi jangan menyentuhnya karena sekarang."

Memperkenalkan --ws-error-highlight=<kind>pilihan, yang memungkinkan mereka lewat dipisahkan koma daftar old, newdan contextuntuk menentukan apa yang baris untuk menyorot spasi kesalahan pada.

The Dokumentasi sekarang termasuk :

--ws-error-highlight=<kind>

Sorot kesalahan spasi pada baris yang ditentukan oleh <kind>dalam warna yang ditentukan oleh color.diff.whitespace.
<kind>adalah daftar dipisahkan koma old, new, context.
Jika opsi ini tidak diberikan, hanya kesalahan spasi dalamnew baris yang disorot.

Misalnya --ws-error-highlight=new,oldmenyoroti kesalahan spasi pada baris yang dihapus dan ditambahkan.
alldapat digunakan sebagai kependekan dari old,new,context.

Misalnya, komit lama memiliki satu whitespace error ( bbb), tetapi Anda dapat fokus hanya pada kesalahan baru (di akhir still bbbdan ccc):

kesalahan shitespace lama dan baru

(tes dilakukan setelah t/t4015-diff-whitespace.sh)


Dengan Git 2.26 (Q1 2020), kelompok diff-*subperintah pipa sekarang memperhatikan diff.wsErrorHighlightkonfigurasi, yang telah diabaikan sebelumnya; ini memungkinkan "git add -p " untuk juga menampilkan masalah spasi putih kepada pengguna akhir.

Lihat commit da80635 (31 Jan 2020) oleh Jeff King ( peff) .
(Digabung oleh Junio ​​C Hamano - gitster- di commit df04a31 , 14 Feb 2020)

diff: pindahkan diff.wsErrorHighlight ke konfigurasi "dasar"

Ditandatangani oleh: Jeff King

Kami mengurai diff.wsErrorHighlight in git_diff_ui_config(), yang berarti bahwa ini tidak berlaku untuk perintah pipa ledeng, hanya untuk porselen seperti git diffitu sendiri.
Ini agak menjengkelkan karena itu berarti skrip seperti add--interactive, yang menghasilkan perbedaan yang terlihat oleh pengguna dengan warna, tidak menghargai opsi .

Kita dapat mengajarkan skrip tersebut untuk mengurai konfigurasi dan meneruskannya --ws-error-highlightke pipa saluran diff. Tapi ada solusi yang lebih sederhana.

Seharusnya cukup aman bagi pipa ledeng untuk mengikuti opsi ini, karena ini hanya bekerja jika warna diaktifkan. Dan siapa pun yang mengurai keluaran berwarna pasti sudah berurusan dengan fakta yang color.diff.*mungkin mengubah keluaran persis yang mereka lihat; opsi tersebut telah menjadi bagian git_diff_basic_config()sejak dimulainya di 9a1805a872 (tambahkan callback config diff "dasar", 2008-01-04, Git v1.5.4-rc3).

Jadi kita bisa memindahkannya ke konfigurasi "dasar", yang diperbaiki add--interactive, bersama dengan skrip lain di kapal yang sama, dengan risiko yang sangat rendah melukai pengguna pipa ledeng.

VonC
sumber
-2

Karena baris TABdimulai dengan pertama kali SPACE. Buka file patch dan ganti TABdengan SPACE. Misal pada vim on line + dari file patch type x untuk menghapus spasi dan tidak menghapus tanda + dan memasukkan spasi (CTRL) pada eqiv ke ukuran aslinya.

Marian
sumber
1
-1 Anda benar-benar berpikir git akan mengeluh tentang indentasi tab gaya Linus? Satu-satunya penggunaan tab yang sah, jika ada, justru di awal baris.
pengguna2394284