cdgitpath remote.$remote.url
else
- local GIT_REMOTES remote
- GIT_REMOTES=""
- for remote in `git remote`; do
- if git config --get remote.$remote.url | grep -q '^\(/\|\.\./\)'; then
- GIT_REMOTES="$GIT_REMOTES $remote"
- fi
- done
- GIT_REMOTES=($GIT_REMOTES)
+ if [ -n "$1" ]; then
+ echo "Cannot find directory for remote $1" >&2
+ echo "Usage: cdremote [remote_name]" >&2
+ return 1
+ fi
+
+ _list_remotes '^\(/\|\.\./\)' # (/ or ../ at the beginning)
if [ ${#GIT_REMOTES[*]} -eq 1 ]; then
remote=${GIT_REMOTES[0]}
+ unset GIT_REMOTES
cdgitpath remote.$remote.url
else
+ unset GIT_REMOTES
echo "Cannot find directory for any remote" >&2
echo "Usage: cdremote [remote_name]" >&2
return 1
echo "Usage: _list_remotes remote_regexp" >&2
return 1
fi
- GIT_REMOTES=""
+ declare -ag GIT_REMOTES=()
local remote
for remote in `git remote`; do
if git config --get remote.$remote.url | grep -q "$1"; then
- GIT_REMOTES="$GIT_REMOTES $remote"
+ GIT_REMOTES+=($remote)
fi
done
}
_list_remotes_completion() {
local cur="${COMP_WORDS[COMP_CWORD]}";
_list_remotes "$1"
- COMPREPLY=(`compgen -W "$GIT_REMOTES" -- "$cur"`)
+ COMPREPLY=(`compgen -W "${GIT_REMOTES[*]}" -- "$cur"`)
unset GIT_REMOTES
}