diff options
-rwxr-xr-x | git-base.sh | 25 | ||||
-rwxr-xr-x | prompt.sh | 5 |
2 files changed, 28 insertions, 2 deletions
diff --git a/git-base.sh b/git-base.sh index 3cf24b5..f75e89b 100755 --- a/git-base.sh +++ b/git-base.sh @@ -419,3 +419,28 @@ zsh_color_local_commits() { fi echo "$local_commits" } + +bash_color_remote_commits() { + local remote_master="\xF0\x9D\x98\xAE" # an italic m to represent master + local green_ahead_arrow="\033[1;32m←\033[0m" + local red_behind_arrow="\033[1;31m→\033[0m" + local yellow_diverged_arrow="\033[1;33m⇄\033[0m" + local not_upstream="\033[1;31m⚡\033[0m" + + if remote_branch="$(remote_branch_name)"; then + remote_ahead="$(remote_ahead_of_master "$remote_branch")" + remote_behind="$(remote_behind_of_master "$remote_branch")" + + if [[ "$remote_behind" -gt "0" && "$remote_ahead" -gt "0" ]]; then + remote="$remote_master $remote_behind $yellow_diverged_arrow $remote_ahead " + elif [[ "$remote_ahead" -gt "0" ]]; then + remote="$remote_master $green_ahead_arrow $remote_ahead " + elif [[ "$remote_behind" -gt "0" ]]; then + remote="$remote_master $remote_behind $red_behind_arrow " + fi + else + remote="upstream $not_upstream " + fi + + echo "$remote" +} @@ -1,5 +1,6 @@ -source ./git-base.sh +dot="$(cd "$(dirname "$0")"; pwd)" +source "$dot/git-base.sh" -prompt="$(branch_name)$(bash_color_local_commits)$(bash_color_changes_status)" +prompt="$(bash_color_remote_commits)$(branch_name)$(bash_color_local_commits)$(bash_color_changes_status)" echo $prompt |