Bahasa Indonesia

Alat pengembang · Perbandingan teks

Setiap Baris Berubah? Akhiran Garis, Spasi Akhir, dan BOM dalam Perbedaan

· Cara kerjanya

perbedaan teks akhiran baris melakukan debug

Tumpukan garis paralel dengan tanda akhir tambahan dan penanda baris pertama
Ilustrasi vektor ToolAcre asli

Mendiagnosis tiga penyebab tak terlihat dari perbandingan yang melaporkan setiap baris berbeda, dan menunjukkan cara membedakan mana yang Anda miliki sebelum menyalahkan penulisnya.

File yang sama, disimpan dua kali, tampaknya ditulis ulang — menyiapkan kasus umum file yang diedit pada dua sistem operasi

Dua kali penyimpanan dapat terlihat seperti penulisan ulang ketika editor mengubah karakter yang tidak terlihat, namun perilaku ToolAcre bergantung pada karakter mana yang diubah. Ini menormalkan akhir baris sebelum mencocokkan, sementara spasi di tepi garis dan U+FEFF di awal tetap menjadi konten baris biasa kecuali opsi lain mengubah kuncinya.

Bangun perlengkapan diagnostik alih-alih menebak-nebak dari warna. Bandingkan satu pasangan yang hanya berbeda pada bagian akhir, pasangan lainnya berbeda pada spasi tambahan, dan pasangan ketiga dengan BOM di depannya. Pasangan terkontrol mengungkapkan batasan alat dengan lebih andal dibandingkan file nyata yang berisi beberapa perubahan tak terlihat sekaligus.

CRLF versus LF: karakter di akhir setiap baris — menjelaskan mengapa Windows mengakhiri baris dengan dua karakter, Unix dengan satu karakter, dan bagaimana diff melihat gerbong tambahan kembali

`splitLines` menggantikan CRLF dan satu-satunya CR dengan LF, lalu berpisah. Pengujian menetapkan bahwa ketiga konvensi menghasilkan array yang sama. Oleh karena itu, perbedaan hanya CRLF tidak terlihat meskipun Abaikan spasi kosong; klaim garis besar bahwa setiap baris akan berbeda bertentangan dengan implementasi ini.

Baris baru terakhir juga tidak membuat baris tambahan. Setelah pemisahan, satu entri terminal kosong dihapus. Baris kosong asli di tengah tetap menjadi unit perbandingan, sehingga perilaku tersebut membedakan konvensi akhiran file dari pemisahan vertikal yang disengaja di dalam dokumen.

ToolAcre menormalkan CRLF, CR dan LF sebelum perbandingan, sehingga perubahan yang hanya berakhir akan hilang

Spasi tambahan tetap pada garis aslinya. Dengan perbandingan biasa, `name=value` dan `name=value ` memiliki kunci yang berbeda. Abaikan spasi putih memangkas kedua ujung dan menciutkan proses internal, sehingga opsi tersebut dapat membuat pasangan cocok sambil mempertahankan teks asli kiri di baris sama yang ditampilkan.

Pustaka juga menerapkan opsi `ignoreTrailingWhitespace` yang lebih sempit, namun UI saat ini tidak memaparkannya. Artikel tidak boleh menjelaskan kotak centang yang tidak dapat dipilih pengguna. Panel yang dikirimkan menawarkan Abaikan huruf besar-kecil, Abaikan semua perbedaan spasi, dan Ciutkan proses yang lama tidak berubah.

Tanda urutan byte di bagian atas file — menjelaskan karakter U+FEFF yang ditambahkan beberapa editor ke file UTF-8 dan mengapa hanya baris pertama saja yang berbeda

Tanda urutan byte UTF-8 yang didekodekan menjadi teks JavaScript adalah U+FEFF di awal baris pertama. `splitLines` tidak memiliki penghapusan BOM secara eksplisit. Dengan pencocokan biasa, karakter tersebut hanya dapat membuat baris pertama berbeda sementara baris selanjutnya tetap sama.

Operasi spasi putih JavaScript mungkin memperlakukan U+FEFF sebagai spasi putih ketika Abaikan panggilan spasi putih `trim`, namun artikel ini tidak menggeneralisasikannya ke dalam perilaku pengodean file. Editor menerima string; itu tidak membaca byte file atau melaporkan pengkodean. Periksa karakter sebenarnya ketika asal tingkat byte penting.

Contoh praktis: membedakan ketiga penyebab - memberikan jalur keputusan: perbedaan hanya pada baris pertama menunjuk ke BOM, setiap garis menunjuk ke akhir, garis tersebar menunjuk ke spasi tambahan

Mulailah dengan `alpha beta` dan `alpha beta`: hasilnya identik. Selanjutnya, bandingkan `alpha beta` dengan `alpha beta`: mode biasa melaporkan baris pengganti, sedangkan mode spasi mencocokkannya. Terakhir, awali alpha di salah satu sisi dengan U+FEFF dan amati pengaruhnya pada baris pertama.

Urutan tersebut memisahkan penyebab menggunakan operasi yang terbukti di repositori. Jika setiap baris masih berbeda setelah mengakhiri normalisasi, selidiki konten, lekukan, atau karakter tambahan daripada menyalahkan CRLF saja. Jika hanya baris pertama yang berbeda, periksa poin kode utamanya sebelum menulis ulang seluruh file.

Menggunakan opsi spasi putih sebagai diagnostik — menunjukkan bagaimana mengaktifkan abaikan spasi di perbandingan Teks ToolAcre dapat menyerap gangguan spasi tambahan dan akhir baris sehingga hasil edit yang sebenarnya terlihat menonjol

Abaikan spasi putih berguna untuk noise spasi tambahan karena akan memangkas dan memadatkan tombol garis. Ia tidak bertanggung jawab untuk menyembunyikan CRLF versus LF; itu sudah terjadi saat pemisahan. Memisahkan tahapan-tahapan tersebut akan mencegah kesimpulan yang menyesatkan tentang opsi mana yang memperbaiki perbandingan.

Jalankan kedua tampilan karena pemangkasan dapat menyembunyikan lekukan yang berarti dan kondensasi dapat mengubah nilai lebar tetap atau literal string. Hasil normalisasi yang tenang menunjukkan bahwa kuncinya cocok dengan transformasi tersebut. Itu tidak menyatakan bahwa file asli identik dengan byte atau dapat dipertukarkan secara semantik.

Mode spasi putih mendiagnosis spasi tambahan, sementara akhiran baris sudah dinormalisasi

Perbedaan teks tidak mengonversi file, mengonfigurasi Git, mengubah pengaturan editor, atau mengekspos byte heksadesimal. Ia menerima string yang ditempel dan melaporkan operasi baris. Saran tentang `.gitattributes`, `core.autocrlf` atau perbaikan pengkodean adalah milik alat yang perilakunya dapat diverifikasi secara terpisah.

Alat tersebut juga tidak dapat membedakan bagaimana karakter tak kasat mata memasuki teks. Formatter, clipboard, decoder, atau pengeditan manual dapat menghasilkan string yang sama. Gunakan perbandingan untuk menemukan baris, lalu periksa alur sumber sebelum menetapkan penyebabnya.

Kesimpulan: periksa hal-hal yang tidak terlihat sebelum menyalahkan pembuatnya — rangkum jalur diagnostik dan catat perbandingan yang dijalankan di browser Anda, sehingga file sensitif tetap ada di mesin Anda

Periksa yang tak terlihat dalam urutan tetap: akhiran, spasi tambahan atau spasi internal, lalu karakter khusus di depan. Pengujian ToolAcre memberikan hasil yang pasti untuk kategori pertama dan opsinya membantu mengisolasi kategori kedua. Yang ketiga mungkin memerlukan pemeriksa karakter di luar rute ini.

Pemisahan garis di sisi browser membuat perbedaan akhir lintas platform menghilang sesuai desain. Ini memang mudah, tetapi ini juga berarti alat ini tidak dapat membuktikan dua file sumber menggunakan byte baris baru fisik yang sama. Pilih utilitas byte-aware ketika mempertahankan representasi kawat atau repositori yang tepat adalah persyaratannya.