summaryrefslogtreecommitdiff
path: root/zsh/functions/update_current_git_vars
diff options
context:
space:
mode:
Diffstat (limited to 'zsh/functions/update_current_git_vars')
-rw-r--r--zsh/functions/update_current_git_vars43
1 files changed, 43 insertions, 0 deletions
diff --git a/zsh/functions/update_current_git_vars b/zsh/functions/update_current_git_vars
new file mode 100644
index 0000000..0e65c37
--- /dev/null
+++ b/zsh/functions/update_current_git_vars
@@ -0,0 +1,43 @@
+# based on http://sebastiancelis.com/2009/nov/16/zsh-prompt-git-users/
+unset __CURRENT_GIT_BRANCH
+unset __CURRENT_GIT_BRANCH_STATUS
+unset __CURRENT_GIT_BRANCH_IS_DIRTY
+
+local git_dir head
+
+git_dir="$(git rev-parse --git-dir 2>/dev/null)"
+
+if [[ -n "$git_dir" ]] ; then
+ head=$(cat "$git_dir/HEAD")
+ if [[ $head =~ '^ref: ' ]]; then
+ __CURRENT_GIT_BRANCH=$(expr "$head" : 'ref: refs/heads/\(.*\)')
+ else
+ __CURRENT_GIT_BRANCH="no-branch"
+ fi
+fi
+
+#local st="$(git status 2>/dev/null)"
+#if [[ -n "$st" ]]; then
+# local -a arr
+# arr=(${(f)st})
+#
+# if [[ $arr[1] =~ 'Not currently on any branch.' ]]; then
+# __CURRENT_GIT_BRANCH='no-branch'
+# else
+# __CURRENT_GIT_BRANCH="${arr[1][(w)4]}";
+# fi
+#
+# if [[ $arr[2] =~ 'Your branch is' ]]; then
+# if [[ $arr[2] =~ 'ahead' ]]; then
+# __CURRENT_GIT_BRANCH_STATUS='ahead'
+# elif [[ $arr[2] =~ 'diverged' ]]; then
+# __CURRENT_GIT_BRANCH_STATUS='diverged'
+# else
+# __CURRENT_GIT_BRANCH_STATUS='behind'
+# fi
+# fi
+#
+# if [[ ! $st =~ 'nothing to commit' ]]; then
+# __CURRENT_GIT_BRANCH_IS_DIRTY='1'
+# fi
+#fi