diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2008-08-31 15:50:23 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-08-31 10:14:58 -0700 |
commit | 8af84dadb142f7321ff0ce8690385e99da8ede2f (patch) | |
tree | e47023679099de35b18da39c3b1c89efc0dd2c3a /git.c | |
parent | a1184d85e8752658f02746982822f43f32316803 (diff) | |
download | git-8af84dadb142f7321ff0ce8690385e99da8ede2f.tar.gz |
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>
Diffstat (limited to 'git.c')
-rw-r--r-- | git.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -499,7 +499,9 @@ int main(int argc, const char **argv) cmd, argv[0]); exit(1); } - help_unknown_cmd(cmd); + argv[0] = help_unknown_cmd(cmd); + handle_internal_command(argc, argv); + execv_dashed_external(argv); } fprintf(stderr, "Failed to run command '%s': %s\n", |