1 poin oleh GN⁺ 2025-01-20 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2025-01-20
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_enabled

    • Satuan harus disertakan dalam nama pengaturan. Misalnya, gunakan int timeout_msec alih-alih int timeout
  • Ini terlihat seperti desain yang buruk. Mengubah interpretasi nilai pengaturan yang sudah ada sebaiknya dihindari

    • Tidak baik jika argumen pengaturan help.autocorrect diukur dalam satuan nonstandar. Akan lebih baik jika diatur dengan boolean dan bilangan desimal
  • Ini contoh bagus dari "creeping featurism". Hal itu menimbulkan kompleksitas yang tidak perlu

  • Penggunaan deciseconds tidak dibahas. xmobar juga mengalami masalah serupa

    • Angka kecil bisa disalahartikan sebagai detik, bukan milidetik
  • Jika pengaturan help.autocorrect disetel ke 1, proses akan lanjut setelah menunggu 100ms. Seharusnya ditambahkan pengaturan baru

    • innodb_flush_log_at_trx_commit di MySQL juga mengandung kesalahan serupa
  • Saat autocorrect disetel ke 3 detik, fitur ini gagal membedakan tindakan berbahaya dan aman, dan riwayat shell tercemari oleh perintah yang salah ketik

    • Setahun kemudian diputuskan untuk menonaktifkannya
  • 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)