-
Mengapa fitur koreksi otomatis Git terlalu cepat
- Fitur koreksi otomatis Git menunggu 0,1 detik sebelum menjalankan perintah yang salah ketik.
- Ini mirip dengan waktu kedipan mata manusia, sehingga sulit untuk bereaksi.
- Fitur ini berasal dari kesalahpahaman soal satuan waktu yang diusulkan oleh maintainer Git dan konfigurasi yang keliru.
-
Bagaimana fitur ini dirancang?
- Secara default, Git tidak menjalankan perintah yang salah ketik.
- Perilaku bawaan adalah menampilkan perintah yang mirip lalu keluar.
- Pada 2008, Johannes Schindelin memperkenalkan patch untuk mencari dan menjalankan perintah yang mirip.
- Alex Riesen membuatnya dapat dikonfigurasi melalui pengaturan
help.autocorrect.
- Jika
help.autocorrect diatur ke 1, Git akan menjalankan perintah setelah 0,1 detik.
-
Nilai pengaturan yang tepat itu apa?
- Jika diatur ke
10, Git akan menunggu selama 1 detik.
- Menurut dokumentasi, nilai yang bisa diatur adalah sebagai berikut:
0: menampilkan perintah yang disarankan.
- bilangan positif: menjalankan perintah setelah jumlah 0,1 detik yang ditentukan.
immediate: langsung menjalankan perintah.
prompt: menampilkan perintah yang disarankan dan memunculkan prompt untuk menanyakan apakah perintah akan dijalankan.
never: tidak menjalankan maupun menampilkan perintah yang disarankan.
- Pengaturan
prompt mungkin yang paling masuk akal.
-
Bagaimana Git menebak?
- Git menebak perintah dengan menggunakan algoritme jarak Levenshtein termodifikasi yang sederhana.
- Jika jaraknya melewati ambang tertentu, Git tidak akan menebak.
- Misalnya,
git bass ditebak sebagai rebase, tetapi bassa tidak ditebak.
-
Perbaikan kecil saya
- Saya menulis patch kecil agar nilai
1 ditafsirkan sebagai "langsung".
- Maintainer Git meminta agar semua nilai string boolean ditafsirkan dengan benar.
- Jika patch ini diterapkan, versi Git di masa depan tidak lagi akan menguji kecepatan reaksi Anda.
1 komentar
Komentar Hacker News
Anekdot tentang Hal Finney yang menyingkat pesan kesalahan menjadi "EH?" saat menulis interpreter BASIC untuk sistem Mattel Intellivision pada tahun 70-an itu lucu
Masalah muncul karena nama pengaturannya tidak jelas. Dibutuhkan nama yang lebih eksplisit seperti
help.autocorrect_enabledint timeout_msecalih-alihint timeoutIni terlihat seperti desain yang buruk. Mengubah interpretasi nilai pengaturan yang sudah ada sebaiknya dihindari
help.autocorrectdiukur dalam satuan nonstandar. Akan lebih baik jika diatur dengan boolean dan bilangan desimalIni contoh bagus dari "creeping featurism". Hal itu menimbulkan kompleksitas yang tidak perlu
Penggunaan deciseconds tidak dibahas. xmobar juga mengalami masalah serupa
Jika pengaturan
help.autocorrectdisetel ke 1, proses akan lanjut setelah menunggu 100ms. Seharusnya ditambahkan pengaturan baruinnodb_flush_log_at_trx_commitdi MySQL juga mengandung kesalahan serupaSaat autocorrect disetel ke 3 detik, fitur ini gagal membedakan tindakan berbahaya dan aman, dan riwayat shell tercemari oleh perintah yang salah ketik
Jika salah mengetik perintah, kita bisa langsung menekan ctrl-C untuk membatalkannya sebelum timeout 100ms
Deciseconds adalah satuan nonstandar. Menentukan jeda dalam milidetik atau detik lebih umum digunakan
Waktu reaksi berbeda tergantung jenis rangsangan. Respons auditori lebih cepat daripada visual, dan taktil adalah yang paling cepat (90 - 180 ms)