+if test -x /usr/bin/git >/dev/null 2>&1; then
+# chdir to a remote's directory (if the remote is on the local FS)
+cdremote() {
+ cd "`git config --get remote.$1.url`"
+}
+
+if test -n "$BASH_VERSION"; then
+ # list remotes with URLs matching a regexp
+ list_remotes() {
+ 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"
+ fi
+ done
+ }
+
+ # completion for cdremote - list remotes with directories as URLs
+ _cdremote_complete() {
+ local cur="${COMP_WORDS[COMP_CWORD]}";
+ list_remotes '^\(/\|\.\./\)' # (/ or ../ at the beginning)
+ COMPREPLY=(`compgen -W "$GIT_REMOTES" -- "$cur"`)
+ unset GIT_REMOTES
+ }
+
+ complete -F _cdremote_complete cdremote