44 lines
866 B
Bash
Executable File
44 lines
866 B
Bash
Executable File
#!/bin/bash
|
|
|
|
heading() {
|
|
# or "\e" on *nix
|
|
HEAD="\033[96m\033[1m"
|
|
DONE="\033[0m"
|
|
echo -e "${HEAD}${1}${DONE}"
|
|
}
|
|
|
|
# 0) find local git repo, or fail now
|
|
GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|
if [[ "$GIT_ROOT" == "" ]]; then
|
|
echo "! can't find nearby git repository" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# 1) show git branches
|
|
heading Branches
|
|
git branch --color -v
|
|
echo
|
|
|
|
# 2) file status
|
|
heading Status
|
|
git status
|
|
echo
|
|
|
|
# 3) stashed changes
|
|
if [[ -n $(git stash list) ]]; then
|
|
heading Stash
|
|
git stash list | sed "s/^/ /"
|
|
echo
|
|
fi
|
|
|
|
# 4) divergence from source
|
|
UPSTREAM=$(git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null)
|
|
if [[ -n "${UPSTREAM}" ]]; then
|
|
heading "upstream [${UPSTREAM}] divergence"
|
|
git diff -r $UPSTREAM --name-only --color | sed "s/^/ /"
|
|
else
|
|
heading "WARNING- no upstream configured"
|
|
fi
|
|
echo
|
|
|