From a9c4641df7989c9adf6af471705ebf735c35a92f Mon Sep 17 00:00:00 2001 From: Alexander Kuleshov Date: Thu, 22 Jan 2015 14:39:44 +0600 Subject: 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 --- git-add--interactive.perl | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'git-add--interactive.perl') diff --git a/git-add--interactive.perl b/git-add--interactive.perl index 1fadd69f88..f35b3e6152 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"; } -- cgit v1.2.3