From fe8389a2f5aad6bf4b6a6b003c349fe324cbf84d Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sun, 21 Aug 2016 12:32:50 +1200 Subject: Add some upstream checking to Git prompt Also add some comments to be a bit less cryptic --- bash/bashrc.d/prompt.bash | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'bash/bashrc.d') diff --git a/bash/bashrc.d/prompt.bash b/bash/bashrc.d/prompt.bash index dca34928..1e8c568d 100644 --- a/bash/bashrc.d/prompt.bash +++ b/bash/bashrc.d/prompt.bash @@ -127,14 +127,30 @@ prompt() { # Collect symbols representing repository state local state + + # Upstream HEAD has commits after local HEAD; we're "behind" + (($(git rev-list --count 'HEAD..@{u}' 2>/dev/null) > 0)) && + state=${state}\< + + # Local HEAD has commits after upstream HEAD; we're "ahead" + (($(git rev-list --count '@{u}..HEAD' 2>/dev/null) > 0)) && + state=${state}\> + + # Tracked files are modified git diff-files --quiet || - state=${state}! + state=${state}\! + + # Changes are staged git diff-index --cached --quiet HEAD || - state=${state}+ + state=${state}\+ + + # There are some untracked and unignored files [[ -n $(git ls-files --others --exclude-standard) ]] && state=${state}\? + + # There are stashed changes git rev-parse --quiet --verify refs/stash >/dev/null && - state=${state}^ + state=${state}\^ # Print the status in brackets; add a git: prefix only if there # might be another VCS prompt (because PROMPT_VCS is set) -- cgit v1.2.3