git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] git-add--interactive: print message if there are no untracked files
@ 2015-01-21 19:03 Alexander Kuleshov
  2015-01-21 21:11 ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Alexander Kuleshov @ 2015-01-21 19:03 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Alexander Kuleshov

If user selects 'add untracked' and there are no untracked files,
"Add untracked>>" opens. But it does not make sense in this case, because there
are no untracked files. So let's print message and exit from "add untracked" mode.

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
---
 git-add--interactive.perl | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 94b988c..1a6dcf3 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -724,11 +724,15 @@ sub revert_cmd {
 }
 
 sub add_untracked_cmd {
-	my @add = list_and_choose({ PROMPT => 'Add untracked' },
-				  list_untracked());
-	if (@add) {
-		system(qw(git update-index --add --), @add);
-		say_n_paths('added', @add);
+	if (system(qw(git ls-files --others --exclude-standard --))) {
+		my @add = list_and_choose({ PROMPT => 'Add untracked' },
+					  list_untracked());
+		if (@add) {
+			system(qw(git update-index --add --), @add);
+			say_n_paths('added', @add);
+		}
+	} else {
+		print "No untracked files.\n";
 	}
 	print "\n";
 }
-- 
2.3.0.rc1.247.gb53aa6f

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] git-add--interactive: print message if there are no untracked files
  2015-01-21 19:03 [PATCH] git-add--interactive: print message if there are no untracked files Alexander Kuleshov
@ 2015-01-21 21:11 ` Junio C Hamano
  2015-01-21 21:17   ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2015-01-21 21:11 UTC (permalink / raw)
  To: Alexander Kuleshov; +Cc: git

Alexander Kuleshov <kuleshovmail@gmail.com> writes:

> If user selects 'add untracked' and there are no untracked files,
> "Add untracked>>" opens. But it does not make sense in this case,
> because there are no untracked files. So let's print message and
> exit from "add untracked" mode.

That reasoning makes perfect sense.

> Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
> ---
>  git-add--interactive.perl | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/git-add--interactive.perl b/git-add--interactive.perl
> index 94b988c..1a6dcf3 100755
> --- a/git-add--interactive.perl
> +++ b/git-add--interactive.perl
> @@ -724,11 +724,15 @@ sub revert_cmd {
>  }
>  
>  sub add_untracked_cmd {
> -	my @add = list_and_choose({ PROMPT => 'Add untracked' },
> -				  list_untracked());
> -	if (@add) {
> -		system(qw(git update-index --add --), @add);
> -		say_n_paths('added', @add);
> +	if (system(qw(git ls-files --others --exclude-standard --))) {

But this ls-files invocation that knows too much about how
list_untracked() computes things does not.

Why not

	my @add = list_untracked();
        if (@add) {
        	@add = list_and_choose({...}, @add);
	}
        if (!@add) {
		Nothing to do;
	} else {
		Run update-index
	}

or something instead?

> +		my @add = list_and_choose({ PROMPT => 'Add untracked' },
> +					  list_untracked());
> +		if (@add) {
> +			system(qw(git update-index --add --), @add);
> +			say_n_paths('added', @add);
> +		}
> +	} else {
> +		print "No untracked files.\n";
>  	}
>  	print "\n";
>  }

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] git-add--interactive: print message if there are no untracked files
  2015-01-21 21:11 ` Junio C Hamano
@ 2015-01-21 21:17   ` Junio C Hamano
  2015-01-22  7:11     ` Alexander Kuleshov
  0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2015-01-21 21:17 UTC (permalink / raw)
  To: Alexander Kuleshov; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

>>  sub add_untracked_cmd {
>> -	my @add = list_and_choose({ PROMPT => 'Add untracked' },
>> -				  list_untracked());
>> -	if (@add) {
>> -		system(qw(git update-index --add --), @add);
>> -		say_n_paths('added', @add);
>> +	if (system(qw(git ls-files --others --exclude-standard --))) {
>
> But this ls-files invocation that knows too much about how
> list_untracked() computes things does not.
>
> Why not
> ...
> or something instead?

Actually, is there any case where list_and_choose() should give a
prompt to choose from zero candidates?

In other words, I am wondering if this affects other callers of
list_and_choose in any negative way.

 git-add--interactive.perl | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 94b988c..46ed9a7 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -519,6 +519,10 @@ 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};
 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] git-add--interactive: print message if there are no untracked files
  2015-01-21 21:17   ` Junio C Hamano
@ 2015-01-22  7:11     ` Alexander Kuleshov
  0 siblings, 0 replies; 4+ messages in thread
From: Alexander Kuleshov @ 2015-01-22  7:11 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git@vger.kernel.org

No i don't see any reasons why list_and_choose() shoud give a prompt
without candidates. Will resed patch.

Thank you.

2015-01-22 3:17 GMT+06:00 Junio C Hamano <gitster@pobox.com>:
> Junio C Hamano <gitster@pobox.com> writes:
>
>>>  sub add_untracked_cmd {
>>> -    my @add = list_and_choose({ PROMPT => 'Add untracked' },
>>> -                              list_untracked());
>>> -    if (@add) {
>>> -            system(qw(git update-index --add --), @add);
>>> -            say_n_paths('added', @add);
>>> +    if (system(qw(git ls-files --others --exclude-standard --))) {
>>
>> But this ls-files invocation that knows too much about how
>> list_untracked() computes things does not.
>>
>> Why not
>> ...
>> or something instead?
>
> Actually, is there any case where list_and_choose() should give a
> prompt to choose from zero candidates?
>
> In other words, I am wondering if this affects other callers of
> list_and_choose in any negative way.
>
>  git-add--interactive.perl | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/git-add--interactive.perl b/git-add--interactive.perl
> index 94b988c..46ed9a7 100755
> --- a/git-add--interactive.perl
> +++ b/git-add--interactive.perl
> @@ -519,6 +519,10 @@ 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};
>



-- 
_________________________
0xAX

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-01-22  7:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-21 19:03 [PATCH] git-add--interactive: print message if there are no untracked files Alexander Kuleshov
2015-01-21 21:11 ` Junio C Hamano
2015-01-21 21:17   ` Junio C Hamano
2015-01-22  7:11     ` Alexander Kuleshov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).