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

[PATCH] Wrap completions in `type git' conditional statement.

From
SPSung Pae <sung@metablu.com>
Date
Nov 12, 2009, 09:56 UTC
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 <sung@metablu.com>
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
Next: Nanako Shiraishi
Message 1 of 5 in “Wrap completions in `type git' conditional statement.”
  1. Wrap completions in `type git' conditional statement.Sung Pae, Nov 12, 2009
  2. Nanako ShiraishiDec 29, 2009
  3. Shawn O. PearceDec 29, 2009
  4. Junio C HamanoDec 29, 2009
  5. Nanako ShiraishiDec 29, 2009

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.