summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Alexander Kuleshov <kuleshovmail@gmail.com>2015-01-22 14:39:44 +0600
committerLibravatar Junio C Hamano <gitster@pobox.com>2015-01-22 14:44:36 -0800
commita9c4641df7989c9adf6af471705ebf735c35a92f (patch)
tree11dbd9a438755f5c3a295a8f82ef0db863ce8611
parentMerge branch 'maint-1.9' into maint-2.0 (diff)
downloadtgif-a9c4641df7989c9adf6af471705ebf735c35a92f.tar.xz
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 <kuleshovmail@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-add--interactive.perl5
1 files changed, 5 insertions, 0 deletions
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";
}