git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: SZEDER Gábor
Message 2 of 2 in “completion: filter sources of git scripts from available commands”
  1. completion: filter sources of git scripts from available commandsSZEDER Gábor, Mar 15, 2015
  2. Junio C HamanoMar 19, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.