Le jeudi 24 janvier 2013 22:46:13, Junio C Hamano a écrit :
> "Jean-Noël AVILA" <[email protected]> writes:
>
> > In test mode, git completion should propose commands only if they
> > belong to the list of authorized commands.
> >
> > Signed-off-by: Jean-Noel Avila <[email protected]>
> > ---
> >
> > Better show some code than try to explain. Here is what I mean by
> > "filter the output git help -a".
>
> Why do you have to make an extra shell function call for each and
> every possible Git subcommand to slow down everybody's work when not
> in testing mode?
>
My rational was to be sure to put the environment variable out of the
way once the script has been sourced. I can make two alternative
definitions of __git_list_all_commands () depending on the presence of
$AUTHORIZED_CMD_LIST if you are worried about performance.
> Comparing it with Peff's suggestion, it is fairly clear which one we
> should pick, I think.
>
>
>
> > contrib/completion/git-completion.bash | 16 +++++++++++++++-
> > t/t9902-completion.sh | 4 ++--
> > 2 files changed, 17 insertions(+), 3 deletions(-)
> >
> > diff --git a/contrib/completion/git-completion.bash
> > b/contrib/completion/git-completion.bash
> > index 14dd5e7..6490553 100644
> > --- a/contrib/completion/git-completion.bash
> > +++ b/contrib/completion/git-completion.bash
> > @@ -531,6 +531,20 @@ __git_complete_strategy ()
> > return 1
> > }
> >
> > +if test -z "$AUTHORIZED_CMD_LIST"; then
> > + __git_cmdlist ()
> > + {
> > + echo $1;
> > + }
> > +else
> > + __git_cmdlist ()
> > + {
> > + if [[ " $AUTHORIZED_CMD_LIST " =~ " $1 " ]] ; then
> > + echo $1
> > + fi
> > + }
> > +fi
> > +
> > __git_list_all_commands ()
> > {
> > local i IFS=" "$'\n'
> > @@ -538,7 +552,7 @@ __git_list_all_commands ()
> > do
> > case $i in
> > *--*) : helper pattern;;
> > - *) echo $i;;
> > + *) __git_cmdlist $i;;
> > esac
> > done
> > }
> > diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh
> > index 3cd53f8..5e7d81e 100755
> > --- a/t/t9902-completion.sh
> > +++ b/t/t9902-completion.sh
> > @@ -12,8 +12,8 @@ complete ()
> > # do nothing
> > return 0
> > }
> > -
> > -. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash"
> > +AUTHORIZED_CMD_LIST=" checkout show add filter-branch ls-files send-email
> > describe"
> > +. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash"
> >
> > # We don't need this function to actually join words or do anything
> > special.
> > # Also, it's cleaner to avoid touching bash's internal completion
> > variables.
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html