Le jeudi 24 janvier 2013 22:46:13, Junio C Hamano a écrit : > "Jean-Noël AVILA" <jn.avila@xxxxxxx> 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 <jn.avila@xxxxxxx> > > --- > > > > 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 majordomo@xxxxxxxxxxxxxxx > 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html