bash-completion: Support running when set -u is enabled
Under "set -u" semantics, it is an error to access undefined variables. Some user environments may enable this setting in the interactive shell. In any context where the completion functions access an undefined variable, accessing a default empty string (aka "${1-}" instead of "$1") is a reasonable way to code the function, as it silences the undefined variable error while still supplying an empty string. In this patch, functions that should always take an argument still use $1. Functions that have optional arguments use ${1-}. Signed-off-by: Ted Pavlic <ted@tedpavlic.com> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b32acd21d8
commit
25a31f8140
@ -52,7 +52,7 @@ esac
|
||||
|
||||
__gitdir ()
|
||||
{
|
||||
if [ -z "$1" ]; then
|
||||
if [ -z "${1-}" ]; then
|
||||
if [ -n "$__git_dir" ]; then
|
||||
echo "$__git_dir"
|
||||
elif [ -d .git ]; then
|
||||
@ -111,7 +111,7 @@ __git_ps1 ()
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
if [ -n "${1-}" ]; then
|
||||
printf "$1" "${b##refs/heads/}$r"
|
||||
else
|
||||
printf " (%s)" "${b##refs/heads/}$r"
|
||||
@ -143,8 +143,8 @@ __gitcomp ()
|
||||
;;
|
||||
*)
|
||||
local IFS=$'\n'
|
||||
COMPREPLY=($(compgen -P "$2" \
|
||||
-W "$(__gitcomp_1 "$1" "$4")" \
|
||||
COMPREPLY=($(compgen -P "${2-}" \
|
||||
-W "$(__gitcomp_1 "${1-}" "${4-}")" \
|
||||
-- "$cur"))
|
||||
;;
|
||||
esac
|
||||
@ -152,13 +152,13 @@ __gitcomp ()
|
||||
|
||||
__git_heads ()
|
||||
{
|
||||
local cmd i is_hash=y dir="$(__gitdir "$1")"
|
||||
local cmd i is_hash=y dir="$(__gitdir "${1-}")"
|
||||
if [ -d "$dir" ]; then
|
||||
git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
|
||||
refs/heads
|
||||
return
|
||||
fi
|
||||
for i in $(git ls-remote "$1" 2>/dev/null); do
|
||||
for i in $(git ls-remote "${1-}" 2>/dev/null); do
|
||||
case "$is_hash,$i" in
|
||||
y,*) is_hash=n ;;
|
||||
n,*^{}) is_hash=y ;;
|
||||
@ -170,13 +170,13 @@ __git_heads ()
|
||||
|
||||
__git_tags ()
|
||||
{
|
||||
local cmd i is_hash=y dir="$(__gitdir "$1")"
|
||||
local cmd i is_hash=y dir="$(__gitdir "${1-}")"
|
||||
if [ -d "$dir" ]; then
|
||||
git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
|
||||
refs/tags
|
||||
return
|
||||
fi
|
||||
for i in $(git ls-remote "$1" 2>/dev/null); do
|
||||
for i in $(git ls-remote "${1-}" 2>/dev/null); do
|
||||
case "$is_hash,$i" in
|
||||
y,*) is_hash=n ;;
|
||||
n,*^{}) is_hash=y ;;
|
||||
@ -188,7 +188,7 @@ __git_tags ()
|
||||
|
||||
__git_refs ()
|
||||
{
|
||||
local i is_hash=y dir="$(__gitdir "$1")"
|
||||
local i is_hash=y dir="$(__gitdir "${1-}")"
|
||||
local cur="${COMP_WORDS[COMP_CWORD]}" format refs
|
||||
if [ -d "$dir" ]; then
|
||||
case "$cur" in
|
||||
|
Loading…
Reference in New Issue
Block a user