From: Sung Pae Date: Thu, 12 Nov 2009 09:56:38 GMT Subject: [PATCH] Wrap completions in `type git' conditional statement. Message-ID: <44A6FDEB-71B6-42E1-99E3-D6A595FF1B58@metablu.com> Hello, I don't know if this has come up before (I didn't notice in a casual grep of git log), but attached is a little patch to wrap the bash completion script in a `type git' check. From the patch header: -- The onus for checking if a command exists before loading its completions properly falls on individual completion files since they are normally sourced from a completions directory (e.g. source /etc/bash_completion.d/*), or perhaps from a single file concatenated from other completion files. Also, this is standard practice with other bash-completion scripts. -- Cheers, Sung Pae From 5e9d29fa1938554903631a4b560e08211b8efab3 Mon Sep 17 00:00:00 2001 From: Sung Pae Date: Thu, 12 Nov 2009 02:55:28 -0600 Subject: [PATCH] completion: Wrap completions in `type git' conditional statement The onus for checking if a command exists before loading its completions properly falls on the individual completion files since they are normally sourced from a completions directory (e.g. source /etc/bash_completion.d/*), or perhaps from a single file concatenated from other completion files. Also, this is standard practice with other bash-completion scripts. --- contrib/completion/git-completion.bash | 15 ++++++++------- 1 files changed, 8 insertions(+), 7 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index e3ddecc..f1f9fb8 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -18,16 +18,13 @@ # To use these routines: # # 1) Copy this file to somewhere (e.g. ~/.git-completion.sh). -# 2) Added the following line to your .bashrc: +# 2) Add the following line to your .bashrc: # source ~/.git-completion.sh # -# 3) You may want to make sure the git executable is available -# in your PATH before this script is sourced, as some caching -# is performed while the script loads. If git isn't found -# at source time then all lookups will be done on demand, -# which may be slightly slower. +# Note that git must be available in your PATH or as an alias at the +# time of sourcing. # -# 4) Consider changing your PS1 to also show the current branch: +# 3) Consider changing your PS1 to also show the current branch: # PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' # # The argument to __git_ps1 will be displayed only if you @@ -60,6 +57,8 @@ # git@vger.kernel.org # +{ type git || type git.exe; } &>/dev/null && { + case "$COMP_WORDBREAKS" in *:*) : great ;; *) COMP_WORDBREAKS="$COMP_WORDBREAKS:" @@ -2242,3 +2241,5 @@ if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \ || complete -o default -o nospace -F _git git.exe fi + +} # type git -- 1.6.5