|
@@ -4,15 +4,21 @@ function git_prompt_info() {
|
|
|
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
|
|
}
|
|
|
|
|
|
+
|
|
|
# Checks if working tree is dirty
|
|
|
parse_git_dirty() {
|
|
|
- if [[ -n $(git status -s --ignore-submodules=dirty 2> /dev/null) ]]; then
|
|
|
+ local SUBMODULE_SYNTAX=''
|
|
|
+ if [[ $POST_1_7_2_GIT -gt 0 ]]; then
|
|
|
+ SUBMODULE_SYNTAX="--ignore-submodules=dirty"
|
|
|
+ fi
|
|
|
+ if [[ -n $(git status -s ${SUBMODULE_SYNTAX} 2> /dev/null) ]]; then
|
|
|
echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
|
|
|
else
|
|
|
echo "$ZSH_THEME_GIT_PROMPT_CLEAN"
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
+
|
|
|
# Checks if there are commits ahead from remote
|
|
|
function git_prompt_ahead() {
|
|
|
if $(echo "$(git log origin/$(current_branch)..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then
|
|
@@ -61,4 +67,30 @@ git_prompt_status() {
|
|
|
STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS"
|
|
|
fi
|
|
|
echo $STATUS
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+#compare the provided version of git to the version installed and on path
|
|
|
+#prints 1 if input version <= installed version
|
|
|
+#prints -1 otherwise
|
|
|
+function git_compare_version() {
|
|
|
+ local INPUT_GIT_VERSION=$1;
|
|
|
+ local INSTALLED_GIT_VERSION
|
|
|
+ INPUT_GIT_VERSION=(${(s/./)INPUT_GIT_VERSION});
|
|
|
+ INSTALLED_GIT_VERSION=($(git --version));
|
|
|
+ INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]});
|
|
|
+
|
|
|
+ for i in {1..3}; do
|
|
|
+ if [[ $INSTALLED_GIT_VERSION[$i] -lt $INPUT_GIT_VERSION[$i] ]]; then
|
|
|
+ echo -1
|
|
|
+ return 0
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ echo 1
|
|
|
+}
|
|
|
+
|
|
|
+#this is unlikely to change so make it all statically assigned
|
|
|
+POST_1_7_2_GIT=$(git_compare_version "1.7.2")
|
|
|
+#clean up the namespace slightly by removing the checker function
|
|
|
+unset -f git_compare_version
|
|
|
+
|
|
|
+
|