git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] completion: add branch options --contains --merged --no-merged
@ 2008-07-07 20:41 Eric Raible
  2008-07-08  4:49 ` Shawn O. Pearce
  0 siblings, 1 reply; 12+ messages in thread
From: Eric Raible @ 2008-07-07 20:41 UTC (permalink / raw)
  To: Git Mailing List, Junio C Hamano, szeder, spearce

Signed-off-by: Eric Raible <raible@gmail.com>
---
 contrib/completion/git-completion.bash |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/contrib/completion/git-completion.bash
b/contrib/completion/git-completion.bash
index 0eb8df0..22e109d 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -546,7 +546,7 @@ _git_branch ()
 	--*)
 		__gitcomp "
 			--color --no-color --verbose --abbrev= --no-abbrev
-			--track --no-track
+			--track --no-track --contains --merged --no-merged
 			"
 		;;
 	*)
-- 
1.5.6.1.1071.g76fb.dirty

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

* Re: [PATCH] completion: add branch options --contains --merged --no-merged
  2008-07-07 20:41 [PATCH] completion: add branch options --contains --merged --no-merged Eric Raible
@ 2008-07-08  4:49 ` Shawn O. Pearce
  2008-07-08  5:30   ` Junio C Hamano
  0 siblings, 1 reply; 12+ messages in thread
From: Shawn O. Pearce @ 2008-07-08  4:49 UTC (permalink / raw)
  To: Eric Raible; +Cc: Git Mailing List, Junio C Hamano, szeder

Eric Raible <raible@gmail.com> wrote:
> Signed-off-by: Eric Raible <raible@gmail.com>

Trivially-Acked-by: Shawn O. Pearce <spearce@spearce.org>

;-)

More completion support that probably should go to maint, as the
functionality in git-branch is in 1.5.6 but we (again) forgot to
make sure the completion was up-to-date prior to release.

> ---
>  contrib/completion/git-completion.bash |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/contrib/completion/git-completion.bash
> b/contrib/completion/git-completion.bash
> index 0eb8df0..22e109d 100755
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -546,7 +546,7 @@ _git_branch ()
>  	--*)
>  		__gitcomp "
>  			--color --no-color --verbose --abbrev= --no-abbrev
> -			--track --no-track
> +			--track --no-track --contains --merged --no-merged
>  			"
>  		;;
>  	*)
> -- 
> 1.5.6.1.1071.g76fb.dirty

-- 
Shawn.

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

* Re: [PATCH] completion: add branch options --contains --merged --no-merged
  2008-07-08  4:49 ` Shawn O. Pearce
@ 2008-07-08  5:30   ` Junio C Hamano
  2008-07-08 11:36     ` Johannes Schindelin
  0 siblings, 1 reply; 12+ messages in thread
From: Junio C Hamano @ 2008-07-08  5:30 UTC (permalink / raw)
  To: Shawn O. Pearce; +Cc: Eric Raible, Git Mailing List, szeder

"Shawn O. Pearce" <spearce@spearce.org> writes:

> Eric Raible <raible@gmail.com> wrote:
>> Signed-off-by: Eric Raible <raible@gmail.com>
>
> Trivially-Acked-by: Shawn O. Pearce <spearce@spearce.org>
>
> ;-)
>
> More completion support that probably should go to maint, as the
> functionality in git-branch is in 1.5.6 but we (again) forgot to
> make sure the completion was up-to-date prior to release.

I am actually getting more worried about completion code getting larger
and larger without its performance impact not being looked at nor
addressed adequately.  In my regular working tree:

	$ echo Docu<TAB>

completes "mentation/" instantly, but:

	$ git log -- Docu<TAB>

takes about 1.5 to 2 seconds to complete the same.

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

* Re: [PATCH] completion: add branch options --contains --merged --no-merged
  2008-07-08  5:30   ` Junio C Hamano
@ 2008-07-08 11:36     ` Johannes Schindelin
  2008-07-08 16:56       ` [PATCH] bash: offer only paths after '--' SZEDER Gábor
  0 siblings, 1 reply; 12+ messages in thread
From: Johannes Schindelin @ 2008-07-08 11:36 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Shawn O. Pearce, Eric Raible, Git Mailing List, szeder

Hi,

On Mon, 7 Jul 2008, Junio C Hamano wrote:

> "Shawn O. Pearce" <spearce@spearce.org> writes:
> 
> > Eric Raible <raible@gmail.com> wrote:
> >> Signed-off-by: Eric Raible <raible@gmail.com>
> >
> > Trivially-Acked-by: Shawn O. Pearce <spearce@spearce.org>
> >
> > ;-)
> >
> > More completion support that probably should go to maint, as the
> > functionality in git-branch is in 1.5.6 but we (again) forgot to
> > make sure the completion was up-to-date prior to release.
> 
> I am actually getting more worried about completion code getting larger
> and larger without its performance impact not being looked at nor
> addressed adequately.  In my regular working tree:
> 
> 	$ echo Docu<TAB>
> 
> completes "mentation/" instantly, but:
> 
> 	$ git log -- Docu<TAB>
> 
> takes about 1.5 to 2 seconds to complete the same.

I noticed that myself, but did not have time to look into it.

It shows two bugs, actually: completions do not care about "--", and 
completing refs takes way too long.

Ciao,
Dscho

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

* [PATCH] bash: offer only paths after '--'
  2008-07-08 11:36     ` Johannes Schindelin
@ 2008-07-08 16:56       ` SZEDER Gábor
  2008-07-08 17:46         ` Eric Raible
  2008-07-08 20:21         ` Junio C Hamano
  0 siblings, 2 replies; 12+ messages in thread
From: SZEDER Gábor @ 2008-07-08 16:56 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Junio C Hamano, Shawn O. Pearce, Eric Raible, Git Mailing List

Many git commands use '--' to separate subcommands, options, and refs
from paths.  However, the programmable completion for several of these
commands does not respect the '--', and offer subcommands, options, or
refs after a '--', although only paths are permitted.  e.g. 'git bisect
-- <TAB>' offers subcommands, 'git log -- --<TAB>' offers options and
'git log -- git<TAB>' offers all gitgui tags.

The completion for the following commands share this wrong behaviour:
  am add bisect commit diff log reset shortlog submodule gitk.

To avoid this, we check the presence of a '--' on the command line first
and let the shell do filename completion, if one is found.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
---

On Tue, Jul 08, 2008 at 01:36:43PM +0200, Johannes Schindelin wrote:
> It shows two bugs, actually: completions do not care about "--", 
I think I have found and corrected all the places where '--' was not
handled properly, but might have overlooked something.

Hope that I got the commit message right (;


 contrib/completion/git-completion.bash |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 6a15522..e7d8a75 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -451,6 +451,18 @@ __git_find_subcommand ()
 	done
 }
 
+__git_has_doubledash ()
+{
+	local c=1
+	while [ $c -lt $COMP_CWORD ]; do
+		if [ "--" = "${COMP_WORDS[c]}" ]; then
+			return 0
+		fi
+		c=$((++c))
+	done
+	return 1
+}
+
 __git_whitespacelist="nowarn warn error error-all strip"
 
 _git_am ()
@@ -497,6 +509,8 @@ _git_apply ()
 
 _git_add ()
 {
+	__git_has_doubledash && return
+
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 	case "$cur" in
 	--*)
@@ -511,6 +525,8 @@ _git_add ()
 
 _git_bisect ()
 {
+	__git_has_doubledash && return
+
 	local subcommands="start bad good skip reset visualize replay log run"
 	local subcommand="$(__git_find_subcommand "$subcommands")"
 	if [ -z "$subcommand" ]; then
@@ -612,6 +628,8 @@ _git_cherry_pick ()
 
 _git_commit ()
 {
+	__git_has_doubledash && return
+
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 	case "$cur" in
 	--*)
@@ -631,6 +649,8 @@ _git_describe ()
 
 _git_diff ()
 {
+	__git_has_doubledash && return
+
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 	case "$cur" in
 	--*)
@@ -733,6 +753,8 @@ _git_ls_tree ()
 
 _git_log ()
 {
+	__git_has_doubledash && return
+
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 	case "$cur" in
 	--pretty=*)
@@ -1088,6 +1110,8 @@ _git_remote ()
 
 _git_reset ()
 {
+	__git_has_doubledash && return
+
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 	case "$cur" in
 	--*)
@@ -1100,6 +1124,8 @@ _git_reset ()
 
 _git_shortlog ()
 {
+	__git_has_doubledash && return
+
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 	case "$cur" in
 	--*)
@@ -1157,6 +1183,8 @@ _git_stash ()
 
 _git_submodule ()
 {
+	__git_has_doubledash && return
+
 	local subcommands="add status init update"
 	if [ -z "$(__git_find_subcommand "$subcommands")" ]; then
 		local cur="${COMP_WORDS[COMP_CWORD]}"
@@ -1362,6 +1390,8 @@ _git ()
 
 _gitk ()
 {
+	__git_has_doubledash && return
+
 	local cur="${COMP_WORDS[COMP_CWORD]}"
 	local g="$(git rev-parse --git-dir 2>/dev/null)"
 	local merge=""
-- 
1.5.6.1.118.g82b2fef

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

* Re: [PATCH] bash: offer only paths after '--'
  2008-07-08 16:56       ` [PATCH] bash: offer only paths after '--' SZEDER Gábor
@ 2008-07-08 17:46         ` Eric Raible
  2008-07-08 20:21         ` Junio C Hamano
  1 sibling, 0 replies; 12+ messages in thread
From: Eric Raible @ 2008-07-08 17:46 UTC (permalink / raw)
  To: git

SZEDER Gábor <szeder <at> ira.uka.de> writes:

> 
> Many git commands use '--' to separate subcommands, options, and refs
> from paths.  However, the programmable completion for several of these
> commands does not respect the '--', and offer subcommands, options, or
> refs after a '--', although only paths are permitted.  e.g. 'git bisect

I like this change, but how about also offering a plain '--' as one
of the completion choices as a way of reminding newbies that the
command in question is one of the ones that takes filenames after
all options?

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

* Re: [PATCH] bash: offer only paths after '--'
  2008-07-08 16:56       ` [PATCH] bash: offer only paths after '--' SZEDER Gábor
  2008-07-08 17:46         ` Eric Raible
@ 2008-07-08 20:21         ` Junio C Hamano
  2008-07-08 23:18           ` Shawn O. Pearce
  1 sibling, 1 reply; 12+ messages in thread
From: Junio C Hamano @ 2008-07-08 20:21 UTC (permalink / raw)
  To: SZEDER Gábor
  Cc: Johannes Schindelin, Shawn O. Pearce, Eric Raible,
	Git Mailing List

SZEDER Gábor <szeder@ira.uka.de> writes:

> Hope that I got the commit message right (;

It was very readable.  Thanks.

> +__git_has_doubledash ()
> +{
> +	local c=1
> +	while [ $c -lt $COMP_CWORD ]; do
> +		if [ "--" = "${COMP_WORDS[c]}" ]; then
> +			return 0
> +		fi
> +		c=$((++c))

This assignment is somewhat curious, although it should work as expected
either way ;-)

Shawn?

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

* Re: [PATCH] bash: offer only paths after '--'
  2008-07-08 20:21         ` Junio C Hamano
@ 2008-07-08 23:18           ` Shawn O. Pearce
  2008-07-08 23:23             ` Junio C Hamano
  2008-07-08 23:51             ` SZEDER Gábor
  0 siblings, 2 replies; 12+ messages in thread
From: Shawn O. Pearce @ 2008-07-08 23:18 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: SZEDER GGGbor, Johannes Schindelin, Eric Raible, Git Mailing List

Junio C Hamano <gitster@pobox.com> wrote:
> SZEDER Gábor <szeder@ira.uka.de> writes:
> 
> > Hope that I got the commit message right (;
> 
> It was very readable.  Thanks.

Acked-by: Shawn O. Pearce <spearce@spearce.org>

> > +__git_has_doubledash ()
> > +{
> > +	local c=1
> > +	while [ $c -lt $COMP_CWORD ]; do
> > +		if [ "--" = "${COMP_WORDS[c]}" ]; then
> > +			return 0
> > +		fi
> > +		c=$((++c))
> 
> This assignment is somewhat curious, although it should work as expected
> either way ;-)

I agree, its damned odd.  But we already do this in the same
sort of loop inside of _git_branch() (see around line 541 in
next).  This new patch is only sticking with our current set
of conventions in the script, so I say its fine.

-- 
Shawn.

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

* Re: [PATCH] bash: offer only paths after '--'
  2008-07-08 23:18           ` Shawn O. Pearce
@ 2008-07-08 23:23             ` Junio C Hamano
  2008-07-08 23:51             ` SZEDER Gábor
  1 sibling, 0 replies; 12+ messages in thread
From: Junio C Hamano @ 2008-07-08 23:23 UTC (permalink / raw)
  To: Shawn O. Pearce
  Cc: SZEDER GGGbor, Johannes Schindelin, Eric Raible, Git Mailing List

"Shawn O. Pearce" <spearce@spearce.org> writes:

> Junio C Hamano <gitster@pobox.com> wrote:
>> SZEDER Gábor <szeder@ira.uka.de> writes:
>> 
>> > Hope that I got the commit message right (;
>> 
>> It was very readable.  Thanks.
>
> Acked-by: Shawn O. Pearce <spearce@spearce.org>
>
>> > +__git_has_doubledash ()
>> > +{
>> > +	local c=1
>> > +	while [ $c -lt $COMP_CWORD ]; do
>> > +		if [ "--" = "${COMP_WORDS[c]}" ]; then
>> > +			return 0
>> > +		fi
>> > +		c=$((++c))
>> 
>> This assignment is somewhat curious, although it should work as expected
>> either way ;-)
>
> I agree, its damned odd.  But we already do this in the same
> sort of loop inside of _git_branch() (see around line 541 in
> next).  This new patch is only sticking with our current set
> of conventions in the script, so I say its fine.

Chuckling...  Thanks for sanity checking and an Ack.

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

* Re: [PATCH] bash: offer only paths after '--'
  2008-07-08 23:18           ` Shawn O. Pearce
  2008-07-08 23:23             ` Junio C Hamano
@ 2008-07-08 23:51             ` SZEDER Gábor
  2008-07-08 23:55               ` Shawn O. Pearce
  2008-07-09  0:06               ` Junio C Hamano
  1 sibling, 2 replies; 12+ messages in thread
From: SZEDER Gábor @ 2008-07-08 23:51 UTC (permalink / raw)
  To: Shawn O. Pearce
  Cc: Junio C Hamano, Johannes Schindelin, Eric Raible,
	Git Mailing List

On Tue, Jul 08, 2008 at 11:18:37PM +0000, Shawn O. Pearce wrote:
> Junio C Hamano <gitster@pobox.com> wrote:
> > SZEDER Gábor <szeder@ira.uka.de> writes:
> > > +		c=$((++c))
> > 
> > This assignment is somewhat curious, although it should work as expected
> > either way ;-)
> 
> I agree, its damned odd.  But we already do this in the same
> sort of loop inside of _git_branch() (see around line 541 in
> next).  This new patch is only sticking with our current set
> of conventions in the script, so I say its fine.
Well, according to

  git blame contrib/completion/git-completion.bash  |grep '++'

you started this convention back in 2006, I just copied and modified
your code (;

Maybe an old C++ "heritage"?  In C++ it matters for class types (e.g.
iterators), because the postfix operator might be slower than the
prefix.

Best,
Gábor

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

* Re: [PATCH] bash: offer only paths after '--'
  2008-07-08 23:51             ` SZEDER Gábor
@ 2008-07-08 23:55               ` Shawn O. Pearce
  2008-07-09  0:06               ` Junio C Hamano
  1 sibling, 0 replies; 12+ messages in thread
From: Shawn O. Pearce @ 2008-07-08 23:55 UTC (permalink / raw)
  To: SZEDER GGGbor
  Cc: Junio C Hamano, Johannes Schindelin, Eric Raible,
	Git Mailing List

SZEDER GGGbor <szeder@ira.uka.de> wrote:
> On Tue, Jul 08, 2008 at 11:18:37PM +0000, Shawn O. Pearce wrote:
> > Junio C Hamano <gitster@pobox.com> wrote:
> > > SZEDER Gábor <szeder@ira.uka.de> writes:
> > > > +		c=$((++c))
> > > 
> > > This assignment is somewhat curious, although it should work as expected
> > > either way ;-)
>
> Well, according to
> 
>   git blame contrib/completion/git-completion.bash  |grep '++'
> 
> you started this convention back in 2006, I just copied and modified
> your code (;

Yea, I don't doubt it was me that did this.
 
> Maybe an old C++ "heritage"?  In C++ it matters for class types (e.g.
> iterators), because the postfix operator might be slower than the
> prefix.

Unlikely, but maybe.  I'm not really a C++ programmer.  I tend to
avoid C++ when/if I am given the chance to do so.

-- 
Shawn.

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

* Re: [PATCH] bash: offer only paths after '--'
  2008-07-08 23:51             ` SZEDER Gábor
  2008-07-08 23:55               ` Shawn O. Pearce
@ 2008-07-09  0:06               ` Junio C Hamano
  1 sibling, 0 replies; 12+ messages in thread
From: Junio C Hamano @ 2008-07-09  0:06 UTC (permalink / raw)
  To: SZEDER Gábor
  Cc: Shawn O. Pearce, Johannes Schindelin, Eric Raible,
	Git Mailing List

SZEDER Gábor <szeder@ira.uka.de> writes:

> On Tue, Jul 08, 2008 at 11:18:37PM +0000, Shawn O. Pearce wrote:
>> Junio C Hamano <gitster@pobox.com> wrote:
>> > SZEDER Gábor <szeder@ira.uka.de> writes:
>> > > +		c=$((++c))
>> > 
>> > This assignment is somewhat curious, although it should work as expected
>> > either way ;-)
> ...
> Maybe an old C++ "heritage"?  In C++ it matters for class types (e.g.
> iterators), because the postfix operator might be slower than the
> prefix.

Heh, I was not talking about prefix vs postfix but about the assignment
into the variable that is incremented as a side effect of evaluating the
left hand side.  If you know the variable is incremented already there is
no point in assigning the resulting value to it ;-)

	c=$(( $c + 1 ))

would have avoided such an uneasy feeling, and would have been more
portable.  Even though $((x)) and $(($x)) are supposed to evaluate the
same, some shells do not like dollar-less variable names in arithmetic
expansion, and prefix/postfix increment/decrement are not required to be
supported by POSIX.

But this script being bash completion, we can use as much bashism as we
want here; perhaps I would have written:

	: $((c++))
        

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

end of thread, other threads:[~2008-07-09  0:08 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-07 20:41 [PATCH] completion: add branch options --contains --merged --no-merged Eric Raible
2008-07-08  4:49 ` Shawn O. Pearce
2008-07-08  5:30   ` Junio C Hamano
2008-07-08 11:36     ` Johannes Schindelin
2008-07-08 16:56       ` [PATCH] bash: offer only paths after '--' SZEDER Gábor
2008-07-08 17:46         ` Eric Raible
2008-07-08 20:21         ` Junio C Hamano
2008-07-08 23:18           ` Shawn O. Pearce
2008-07-08 23:23             ` Junio C Hamano
2008-07-08 23:51             ` SZEDER Gábor
2008-07-08 23:55               ` Shawn O. Pearce
2008-07-09  0:06               ` Junio C Hamano

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).