X-Git-Url: https://git.madduck.net/etc/zsh.git/blobdiff_plain/850b4a66843eb139ed7bf5ea8779398143060598..bc7e3da7bae02125450f495af9ac03b6675aaf41:/.zsh/zshrc/60_vcsprompt

diff --git a/.zsh/zshrc/60_vcsprompt b/.zsh/zshrc/60_vcsprompt
index 9c23a0b..423c05a 100644
--- a/.zsh/zshrc/60_vcsprompt
+++ b/.zsh/zshrc/60_vcsprompt
@@ -10,17 +10,21 @@
 # Shamelessly based on http://glandium.org/blog/?p=170
 #
 
+__on_networkfs()
+{
+  case $(df -T . | sed -rne '$s,^[^[:space:]]+[[:space:]]+([^[:space:]]+).*,\1,p') in
+    (cifs|nfs) return 0;;
+  esac
+  return 1
+}
+
 __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
-    readlink -f "$relroot"
-  else
-    echo $PWD
-  fi
+  local dir; dir="$PWD/$(git rev-parse --show-cdup)"
+  # do not use --show-toplevel because it resolves symlinks
+  echo $dir:a
 }
 
 __git_get_branch()
@@ -36,6 +40,7 @@ __git_get_branch()
 __git_print_preprompt()
 {
   [ "$(git config --get core.bare)" = false ] || return
+  __on_networkfs && return
 
   local output
   output=(${(f):-"$(git diff --stat --relative 2>/dev/null)"})