Re: [PATCH/RFC] completion: filter sources of git scripts from available commands
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 19, 2015, 17:51 UTC
- Message-ID
- <xmqqbnjokh9b.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <1426452348-6304-1-git-send-email-szeder@ira.uka.de>
SZEDER Gábor <szeder@ira.uka.de> writes:
Show 19 quoted lines
> Possible solutions to avoid this issue are: > > - Strip the current working directory from $PATH temporarily while we run > 'git help -a' to get all the available commands. Care must be taken, > because '.' can appear at the very beginning, end, or in the middle of > $PATH, not to mention that on unixes it's unlikely but possible to have > a directory containing e.g. ':.:' in the $PATH. > > - Filter out scripts from the output of 'git help -a'. This can be done > by either > * listing all possible script extensions, but this list will most likely > never be complete, or > * filtering out all commands containing a filename extension, i.e. > anything with a '.' in it. > This will bite users whose custom git commands have filename extensions, > i.e. who put 'git-mycmd.sh' in '~/bin'. > > Since this is an RFC, it goes with the last option, because that's the > shortest and simplest.
Would it be another option to re-evaluate the list upon chdir (we can trap an attempt to "cd", can't we?) _and_ if $PATH might contain ".". It is OK if the latter criterion is not precise as long as it does not say "$PATH does not have '.' in it" when it does.
Show 18 quoted lines
> > Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> > --- > contrib/completion/git-completion.bash | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash > index c21190d..9173c41 100644 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -637,6 +637,7 @@ __git_list_all_commands () > do > case $i in > *--*) : helper pattern;; > + *.*) : script sources;; > *) echo $i;; > esac > done