git wrapper: DWIM mistyped commands
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Sun, 31 Aug 2008 13:50:23 +0000 (15:50 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sun, 31 Aug 2008 17:14:58 +0000 (10:14 -0700)
commit8af84dadb142f7321ff0ce8690385e99da8ede2f
treee47023679099de35b18da39c3b1c89efc0dd2c3a
parenta1184d85e8752658f02746982822f43f32316803
git wrapper: DWIM mistyped commands

This patch introduces a modified Damerau-Levenshtein algorithm into
Git's code base, and uses it with the following penalties to show some
similar commands when an unknown command was encountered:

swap = 0, insertion = 1, substitution = 2, deletion = 4

A typical output would now look like this:

$ git sm
git: 'sm' is not a git-command. See 'git --help'.

Did you mean one of these?
am
rm

The cut-off is at similarity rating 6, which was empirically determined
to give sensible results.

As a convenience, if there is only one candidate, Git continues under
the assumption that the user mistyped it.  Example:

$ git reabse
WARNING: You called a Git program named 'reabse', which does
not exist.
Continuing under the assumption that you meant 'rebase'
[...]

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
builtin.h
git.c
help.c
help.h
levenshtein.c [new file with mode: 0644]
levenshtein.h [new file with mode: 0644]