# Git Autocorrect가 포뮬러 원 드라이버에게 너무 빠른 이유

> Clean Markdown view of GeekNews topic #18821. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18821](https://news.hada.io/topic?id=18821)
- GeekNews Markdown: [https://news.hada.io/topic/18821.md](https://news.hada.io/topic/18821.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-20T17:33:19+09:00
- Updated: 2025-01-20T17:33:19+09:00
- Original source: [blog.gitbutler.com](https://blog.gitbutler.com/why-is-git-autocorrect-too-fast-for-formula-one-drivers/)
- Points: 1
- Comments: 1

## Topic Body

- ## Git 자동 수정 기능이 너무 빠른 이유

  - Git의 자동 수정 기능은 잘못 입력된 명령어를 실행하기 전에 0.1초를 기다림.
  - 이는 인간의 눈이 깜빡이는 시간과 비슷하여, 반응하기 어려운 시간임.
  - 이 기능은 Git 유지 관리자가 제안한 시간 단위의 오해와 잘못된 설정에서 비롯됨.

- ## 이 기능은 어떻게 설계되었는가?

  - 기본적으로 Git은 잘못된 명령어를 실행하지 않음.
  - 비슷한 명령어를 제시하고 종료하는 것이 기본 동작임.
  - 2008년, Johannes Schindelin이 비슷한 명령어를 찾아 실행하는 패치를 도입함.
  - Alex Riesen이 `help.autocorrect` 설정을 통해 이를 구성 가능하게 함.
  - `help.autocorrect`를 `1`로 설정하면 0.1초 후에 명령어를 실행함.

- ## 적절한 설정 값은 무엇인가?

  - `10`으로 설정하면 1초 동안 기다림.
  - 문서에 따르면 설정 가능한 값은 다음과 같음:
    - `0`: 제안된 명령어를 보여줌.
    - 양수: 지정된 0.1초 후에 명령어 실행.
    - `immediate`: 즉시 명령어 실행.
    - `prompt`: 제안된 명령어를 보여주고 실행 여부를 묻는 프롬프트 표시.
    - `never`: 제안된 명령어를 실행하거나 보여주지 않음.
  - `prompt` 설정이 가장 합리적일 수 있음.

- ## Git은 어떻게 추측하는가?

  - Git은 단순한 수정된 Levenshtein 거리 알고리듬을 사용하여 명령어를 추측함.
  - 특정 거리 이상이면 추측하지 않음.
  - 예를 들어, `git bass`는 `rebase`로 추측되지만 `bassa`는 추측되지 않음.

- ## 나의 작은 수정

  - `1` 값을 "즉시"로 해석하도록 작은 패치를 작성함.
  - Git 유지 관리자는 모든 불리언 문자열 값을 올바르게 해석하도록 요청함.
  - 이 패치가 적용되면, 미래의 Git 버전에서는 더 이상 반응 속도를 시험하지 않을 것임.

## Comments



### Comment 33646

- Author: neo
- Created: 2025-01-20T17:33:20+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42760620) 
- Hal Finney가 70년대에 Mattel Intellivision 시스템을 위해 BASIC 인터프리터를 작성할 때, 오류 메시지를 "EH?"로 줄였던 일화가 재미있음

- 설정 이름이 명확하지 않아 문제가 발생함. `help.autocorrect_enabled`와 같은 명확한 이름이 필요했음

  - 설정 이름에 단위가 포함되어야 함. 예를 들어, `int timeout` 대신 `int timeout_msec`로 명명해야 함

- 잘못된 설계로 보임. 기존 설정 값을 재해석하여 변경하는 것은 피해야 함

  - `help.autocorrect`의 설정 인수가 비표준 단위로 측정되는 것은 좋지 않음. 불리언과 소수로 설정하는 것이 바람직함

- "creeping featurism"의 좋은 예시임. 불필요한 복잡성을 초래함

- deciseconds 단위 사용이 논의되지 않았음. xmobar도 비슷한 문제를 겪고 있음

  - 작은 숫자가 밀리초가 아닌 초로 오인될 수 있음

- `help.autocorrect` 설정을 1로 설정하면 100ms 대기 후 계속 진행됨. 새로운 설정을 추가했어야 함

  - MySQL의 `innodb_flush_log_at_trx_commit`도 유사한 실수를 포함함

- autocorrect를 3초로 설정했을 때, 위험한 행동과 안전한 행동을 구분하지 못하고 잘못 입력된 명령어로 셸 기록이 오염됨

  - 1년 후 비활성화 결정을 내림

- 명령어를 잘못 입력했을 때, 즉시 ctrl-C를 눌러 100ms 타임아웃 전에 취소할 수 있음

- deciseconds는 비표준 단위임. 밀리초나 초로 지연 시간을 지정하는 것이 더 일반적임

- 반응 시간은 자극 유형에 따라 다름. 청각이 시각보다 빠르고, 촉각이 가장 빠름 (90 - 180 ms)
