- fi
- fi
- }
-
- if test -n "$BASH_VERSION"; then
- # completion for aliases in global .gitconfig
-
- # fixup rbi rbia rbiap rbip - do refs name completion
- _git_fixup() { __gitcomp_nl "$(__git_refs)" ; }
- _git_rbi() { __gitcomp_nl "$(__git_refs)" ; }
- _git_rbia() { __gitcomp_nl "$(__git_refs)" ; }
- _git_rbiap() { __gitcomp_nl "$(__git_refs)" ; }
- _git_rbip() { __gitcomp_nl "$(__git_refs)" ; }
- #
- # push-to-all-remotes - do branch name completion
- _git_push_to_all_remotes() { __gitcomp_nl "$(__git_heads)" ; }
-
- _cdgitpath_complete() {
- local cur="${COMP_WORDS[COMP_CWORD]}"
- COMPREPLY=(`compgen -W "$(__git_config_get_set_variables)" -- "$cur"`)
- }
-
- _git_open() {
- _cdgitpath_complete
- }
-
- complete -F _cdgitpath_complete cdgitpath git-open
-
- # list remotes with URLs matching a regexp
- _list_remotes() {
- if [ $# -ne 1 ]; then
+ fi
+
+ _list_remotes '^\(file:/\|/\|\.\./\)' # (file:/ or / 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
+ fi
+ }
+
+ # completion for aliases in global .gitconfig
+
+ # fixup rbi rbia rbiap rbip - do refs name completion
+ _git_fixup() { __gitcomp_nl "$(__git_refs)" ; }
+ _git_rbi() { __gitcomp_nl "$(__git_refs)" ; }
+ _git_rbia() { __gitcomp_nl "$(__git_refs)" ; }
+ _git_rbiap() { __gitcomp_nl "$(__git_refs)" ; }
+ _git_rbip() { __gitcomp_nl "$(__git_refs)" ; }
+ #
+ # push-to-all-remotes - do branch name completion
+ _git_push_to_all_remotes() { __gitcomp_nl "$(__git_heads)" ; }
+
+ _cdgitpath_complete() {
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ COMPREPLY=(`compgen -W "$(__git_config_get_set_variables)" -- "$cur"`)
+ }
+
+ _git_open() {
+ _cdgitpath_complete
+ }
+
+ complete -F _cdgitpath_complete cdgitpath git-open
+
+ # list remotes with URLs matching a regexp
+ _list_remotes() {
+ if [ $# -ne 1 ]; then