summaryrefslogtreecommitdiff
path: root/add-interactive.c
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2020-11-10 23:42:11 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-11-11 01:00:15 (GMT)
commitd34e4502fa540ed0654df7dd75b3689c48015f1a (patch)
tree7e1d50dc7adfe2fe37610534c653093919aab0c8 /add-interactive.c
parent898f80736c75878acc02dc55672317fcc0e0a5a6 (diff)
downloadgit-d34e4502fa540ed0654df7dd75b3689c48015f1a.zip
git-d34e4502fa540ed0654df7dd75b3689c48015f1a.tar.gz
git-d34e4502fa540ed0654df7dd75b3689c48015f1a.tar.bz2
add -i (built-in): do show an error message for incorrect inputs
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>
Diffstat (limited to 'add-interactive.c')
-rw-r--r--add-interactive.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/add-interactive.c b/add-interactive.c
index 555c4ab..8ca503d 100644
--- a/add-interactive.c
+++ b/add-interactive.c
@@ -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;