]> git.ipfire.org Git - thirdparty/git.git/commitdiff
add -i (built-in): do show an error message for incorrect inputs
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Tue, 10 Nov 2020 23:42:11 +0000 (23:42 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 11 Nov 2020 01:00:15 +0000 (17:00 -0800)
There is a neat feature in `git add -i` where it allows users to select
items via unique prefixes.

In the built-in version of `git add -i`, we specifically sort the items
(unless they are already sorted) and then perform a binary search to
figure out whether the input constitutes a unique prefix. Unfortunately,
by mistake this code misidentifies matches even if the input string is
not actually a prefix of any item.

For example, in the initial menu, where there is a `status` and an
`update` command, the input `tadaa` was mistaken as a prefix of
`update`.

Let's fix this by looking a bit closer whether the input is actually a
prefix of the item at the found insert index.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
add-interactive.c

index 555c4abf324f553b6bb70f6640554d407c12677a..8ca503d80360d9485047fe1448924ddcc1d73cdc 100644 (file)
@@ -194,7 +194,8 @@ static ssize_t find_unique(const char *string, struct prefix_item_list *list)
        else if (index + 1 < list->sorted.nr &&
                 starts_with(list->sorted.items[index + 1].string, string))
                return -1;
-       else if (index < list->sorted.nr)
+       else if (index < list->sorted.nr &&
+                starts_with(list->sorted.items[index].string, string))
                item = list->sorted.items[index].util;
        else
                return -1;