Banding algoritma
Git punya lebih dari satu cara membuat diff. Semuanya menghasilkan jawaban yang benar; yang berbeda adalah jawaban mana yang paling enak dibaca manusia. Halaman ini menjalankan semuanya sekaligus supaya bedanya terlihat.
Myers, patience, dan histogram pada masukan yang sama. Patience biasanya menghasilkan script lebih panjang — itu memang tujuannya: minimal tidak sama dengan mudah dibaca.
Masukkan dua teks
Kiri versi lama, kanan versi baru. Belum punya bahan? Ambil dari daftar Contoh.
Sebelum dibandingkan, teks diubah menjadi daftar angka — satu angka per baris, kata, atau karakter. Pilihan itulah yang menentukan apa yang dianggap sama, jadi ia mengubah kisinya, D-nya, dan diff yang keluar. Diff bukan satu hal: ia jawaban atas pertanyaan yang Anda ajukan.
Angkanya
| Algoritma | Panjang script (D) | Jumlah hunk | Sel V tersimpan | Menjamin minimal |
|---|---|---|---|---|
| Myers | 2 | 1 | 16 | Ya |
| Myers — linear space | 2 | 1 | 22 | Ya |
| Patience | 2 | 1 | — | Tidak dijamin |
| Histogram | 2 | 1 | — | Tidak dijamin |
- Panjang script (D)
- Jumlah baris yang dihapus dan disisipkan. Lebih kecil berarti lebih ringkas.
- Jumlah hunk
- Berapa banyak potongan terpisah yang harus dibaca. Lebih sedikit biasanya lebih enak.
- Menjamin minimal
- Apakah algoritma menjamin D sekecil mungkin — bukan apakah D-nya kebetulan minimal pada masukan ini.
Varian linear-space menyimpan lebih banyak sel daripada greedy di sini. Itu bukan salah hitung: ia menukar penyimpanan O(D²) dengan O(N+M) plus biaya tetap rekursi, dan pada masukan sekecil ini biaya tetapnya yang menang. Bedanya berbalik saat D bertambah — buka contoh yang lebih besar di edit graph untuk melihatnya.
Pada masukan ini keempatnya sepakat: D sama, jumlah hunk sama. Itu biasa pada suntingan kecil — perbedaannya muncul ketika ada baris berulang yang memberi Myers tempat berlabuh lain. Coba contoh "Saat patience menang".
Hanya Myers yang menjamin D minimal. Patience dan histogram menukar minimalitas dengan keterbacaan.
Keluarannya, berdampingan
Masukan yang sama, empat cara membacanya.
Myers
D = 2 · 1 hunk
Myers — linear space
D = 2 · 1 hunk
Patience
D = 2 · 1 hunk
Histogram
D = 2 · 1 hunk