X-Git-Url: https://git.madduck.net/etc/zsh.git/blobdiff_plain/ed53f8c3fed60ee969db84a0501722955e78831c..4b7585a99310e2a7ab0fe0ecc2a9c8d211566c4a:/.zsh/zshrc/60_vcsprompt?ds=inline

diff --git a/.zsh/zshrc/60_vcsprompt b/.zsh/zshrc/60_vcsprompt
index 4cbfb6a..4da474a 100644
--- a/.zsh/zshrc/60_vcsprompt
+++ b/.zsh/zshrc/60_vcsprompt
@@ -13,6 +13,7 @@
 __git_get_reporoot()
 {
   # return the full path to the root of the current git repository
+  [ -d "$GIT_DIR" ] && echo "$GIT_DIR" && return 0
   local relroot
   relroot="$(git rev-parse --show-cdup 2>/dev/null)" || return 1
   if [ -n "$relroot" ]; then
@@ -143,18 +144,23 @@ __vcs_set_prompt_variables()
         { error "could not determine git repository root"; return 1 }
       branch="$(__git_get_branch)" ||
         { error "could not determine git branch"; return 1 }
+      set -- $(__vcs_get_prompt_path_components "$reporoot" "$branch")
+      [ -d "$GIT_DIR" ] && set -- "$GIT_DIR" "$2" "$1"
+      set +x
       ;;
     hg)
       reporoot="$(__hg_get_reporoot)" ||
         { error "could not determine hg repository root"; return 1 }
       branch="$(__hg_get_branch)" ||
         { error "could not determine hg branch"; return 1 }
+      set -- $(__vcs_get_prompt_path_components "$reporoot" "$branch")
       ;;
     bzr)
       reporoot="$(__bzr_get_reporoot)" ||
         { error "could not determine bzr repository root"; return 1 }
       branch="$(__bzr_get_branch)" ||
         { error "could not determine bzr branch"; return 1 }
+      set -- $(__vcs_get_prompt_path_components "$reporoot" "$branch")
       ;;
     *)
       case "$repotype" in
@@ -169,7 +175,6 @@ __vcs_set_prompt_variables()
       return
   esac
 
-  set -- $(__vcs_get_prompt_path_components "$reporoot" "$branch")
   psvar[1]="$1"
   psvar[2]="$2"
   psvar[3]="$3"