diff options
authorAlexander Kuleshov <>2015-01-22 08:39:44 (GMT)
committerJunio C Hamano <>2015-01-22 22:44:36 (GMT)
commita9c4641df7989c9adf6af471705ebf735c35a92f (patch)
parent282616c72d1d08a77ca4fe1186cb708c38408d87 (diff)
add -i: return from list_and_choose if there is no candidate
The list_and_choose() helper is given a prompt and a list, asks the user to make selection from the list, and then returns a list of items chosen. Even when it is given an empty list as the original candidate set to choose from, it gave a prompt to the user, who can only say "I am done choosing". Return an empty result when the input is an empty list without bothering the user. The existing caller must already have a logic to say "Nothing to do" or an equivalent when the returned list is empty (i.e. the user chose to select nothing) if it is necessary, so no change to the callers is necessary. This fixes the case where "add untracked" is asked in "git add -i" and there is no untracked files in the working tree. We used to give an empty list of files to choose from with a prompt, but with this change, we no longer do. Signed-off-by: Alexander Kuleshov <> Signed-off-by: Junio C Hamano <>
1 files changed, 5 insertions, 0 deletions
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 1fadd69..f35b3e6 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -515,6 +515,9 @@ sub error_msg {
sub list_and_choose {
my ($opts, @stuff) = @_;
my (@chosen, @return);
+ if (!@stuff) {
+ return @return;
+ }
my $i;
my @prefixes = find_unique_prefixes(@stuff) unless $opts->{LIST_ONLY};
@@ -725,6 +728,8 @@ sub add_untracked_cmd {
if (@add) {
system(qw(git update-index --add --), @add);
say_n_paths('added', @add);
+ } else {
+ print "No untracked files.\n";
print "\n";