From 6be8b0b2737a1fbfed2e409c88cc804e6fc5bdf3 Mon Sep 17 00:00:00 2001 From: Miguel Duarte Date: Mon, 22 Apr 2013 11:06:19 +0100 Subject: [PATCH 01/26] Fetch new remote revisions every other GIT_PROMPT_FETCH_TIMEOUT minutes (5 is the default) --- gitprompt.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/gitprompt.sh b/gitprompt.sh index 84791fa..ec63263 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -7,6 +7,9 @@ fi # Reset ResetColor="\[\033[0m\]" # Text Reset +# fetch remote revisions every other $GIT_PROMPT_FETCH_TIMEOUT (default 5) minutes +GIT_PROMPT_FETCH_TIMEOUT=${1-5} + # Regular Colors Red="\[\033[0;31m\]" # Red Yellow="\[\033[0;33m\]" # Yellow @@ -61,6 +64,18 @@ function update_current_git_vars() { } function setGitPrompt() { + repo=`git rev-parse --show-toplevel 2> /dev/null` + if [[ ! -e $repo ]]; then + PS1="$PROMPT_START$PROMPT_END" + return + fi + + FETCH_HEAD=$repo/.git/FETCH_HEAD + # Fech repo if local is stale for more than $GIT_FETCH_TIMEOUT minutes + if [[ ! -e $FETCH_HEAD || -e `find $FETCH_HEAD -mmin +$GIT_PROMPT_FETCH_TIMEOUT` ]] + then + git fetch --quiet + fi update_current_git_vars set_virtualenv From 66e5b869790a29041d318d97cdb59bd4ea31cc8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 20:07:33 +0200 Subject: [PATCH 02/26] Configuration for fish shell --- config.fish | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 config.fish diff --git a/config.fish b/config.fish new file mode 100644 index 0000000..eca9cce --- /dev/null +++ b/config.fish @@ -0,0 +1,110 @@ +set -x TERM xterm-256color + +set BROWSER open +set TERM xterm-256color + +set -g -x fish_greeting '' +set -g -x EDITOR nano + +if status --is-interactive + command fortune -s | cowsay +end + +if set -q $__GIT_PROMPT_DIR + set __GIT_PROMPT_DIR ~/.bash +end + +# Colors +# Reset +set ResetColor (set_color normal) # Text Reset + +# Regular Colors +set Red (set_color red) # Red +set Yellow (set_color yellow); # Yellow +set Blue (set_color blue) # Blue +set WHITE (set_color white) + +# Bold +set BGreen (set_color green) # Green + +# High Intensty +set IBlack (set_color black) # Black + +# Bold High Intensty +set Magenta (set_color purple) # Purple + +# Various variables you might want for your PS1 prompt instead +set Time (date +%X) +set PathShort (pwd|sed "s=$HOME=~=") #(prompt_pwd) + +# Default values for the appearance of the prompt. Configure at will. +set GIT_PROMPT_PREFIX "(" +set GIT_PROMPT_SUFFIX ")" +set GIT_PROMPT_SEPARATOR "|" +set GIT_PROMPT_BRANCH "$Magenta" +set GIT_PROMPT_STAGED "$Red}●" +set GIT_PROMPT_CONFLICTS "$Red✖" +set GIT_PROMPT_CHANGED "$Blue✚" +set GIT_PROMPT_REMOTE " " +set GIT_PROMPT_UNTRACKED "…" +set GIT_PROMPT_CLEAN "$BGreen✔" + +#Not applied two lines conention from https://github.com/magicmonty/bash-git-prompt/pull/5/files +set PROMPT_START "$IBlack$Time $ResetColor$Yellow$PathShort$ResetColor" +set PROMPT_END " \$ " + +function fish_prompt + set -e __CURRENT_GIT_STATUS + set gitstatus "$__GIT_PROMPT_DIR/gitstatus.py" + + set _GIT_STATUS (python $gitstatus) + set __CURRENT_GIT_STATUS $_GIT_STATUS + set GIT_BRANCH $__CURRENT_GIT_STATUS[1] + set GIT_REMOTE $__CURRENT_GIT_STATUS[2] + if test "." -eq $GIT_REMOTE + set -e GIT_REMOTE + end + set GIT_STAGED $__CURRENT_GIT_STATUS[3] + set GIT_CONFLICTS $__CURRENT_GIT_STATUS[4] + set GIT_CHANGED $__CURRENT_GIT_STATUS[5] + set GIT_UNTRACKED $__CURRENT_GIT_STATUS[6] + set GIT_CLEAN $__CURRENT_GIT_STATUS[7] + + if test -n "$__CURRENT_GIT_STATUS" + set STATUS " $GIT_PROMPT_PREFIX$GIT_PROMPT_BRANCH$GIT_BRANCH$ResetColor" + + if test -n $GIT_REMOTE + set STATUS "$STATUS$GIT_PROMPT_REMOTE$GIT_REMOTE$ResetColor" + end + + set STATUS "$STATUS$GIT_PROMPT_SEPARATOR" + + if test $GIT_STAGED -ne "0" + set STATUS "$STATUS$GIT_PROMPT_STAGED$GIT_STAGED$ResetColor" + end + + if test $GIT_CONFLICTS -ne "0" + set STATUS "$STATUS$GIT_PROMPT_CONFLICTS$GIT_CONFLICTS$ResetColor" + end + + if test $GIT_CHANGED -ne "0" + set STATUS "$STATUS$GIT_PROMPT_CHANGED$GIT_CHANGED$ResetColor" + end + + if test "$GIT_UNTRACKED" -ne "0" + set STATUS "$STATUS$GIT_PROMPT_UNTRACKED$GIT_UNTRACKED$ResetColor" + end + + if test "$GIT_CLEAN" -eq "1" + set STATUS "$STATUS$GIT_PROMPT_CLEAN" + end + + set STATUS "$STATUS$ResetColor$GIT_PROMPT_SUFFIX" + set PS1 "$PROMPT_START$STATUS$PROMPT_END" + else + set PS1 "$PROMPT_START$PROMPT_END" + end + echo -e $PS1 +end + + From ff17f8af1b313837dc349fc9649708262a47d0d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 20:24:29 +0200 Subject: [PATCH 03/26] Fix, pwd outside git is not working yet :( --- config.fish | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/config.fish b/config.fish index eca9cce..c733452 100644 --- a/config.fish +++ b/config.fish @@ -16,26 +16,26 @@ end # Colors # Reset -set ResetColor (set_color normal) # Text Reset +set ResetColor (set_color normal) # Text Reset # Regular Colors -set Red (set_color red) # Red +set Red (set_color red) # Red set Yellow (set_color yellow); # Yellow -set Blue (set_color blue) # Blue +set Blue (set_color blue) # Blue set WHITE (set_color white) # Bold -set BGreen (set_color green) # Green +set BGreen (set_color green) # Green # High Intensty -set IBlack (set_color black) # Black +set IBlack (set_color black) # Black # Bold High Intensty -set Magenta (set_color purple) # Purple +set Magenta (set_color purple) # Purple # Various variables you might want for your PS1 prompt instead set Time (date +%X) -set PathShort (pwd|sed "s=$HOME=~=") #(prompt_pwd) +set PathShort (pwd|sed "s=$HOME=~=") # Default values for the appearance of the prompt. Configure at will. set GIT_PROMPT_PREFIX "(" @@ -60,7 +60,7 @@ function fish_prompt set _GIT_STATUS (python $gitstatus) set __CURRENT_GIT_STATUS $_GIT_STATUS set GIT_BRANCH $__CURRENT_GIT_STATUS[1] - set GIT_REMOTE $__CURRENT_GIT_STATUS[2] + set GIT_REMOTE "$__CURRENT_GIT_STATUS[2]" if test "." -eq $GIT_REMOTE set -e GIT_REMOTE end From d71c4da27842f4f4def1df347619c5b2db874c6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 21:18:33 +0200 Subject: [PATCH 04/26] Fix for pwd --- config.fish | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/config.fish b/config.fish index c733452..5fd6942 100644 --- a/config.fish +++ b/config.fish @@ -50,25 +50,29 @@ set GIT_PROMPT_UNTRACKED "…" set GIT_PROMPT_CLEAN "$BGreen✔" #Not applied two lines conention from https://github.com/magicmonty/bash-git-prompt/pull/5/files -set PROMPT_START "$IBlack$Time $ResetColor$Yellow$PathShort$ResetColor" + set PROMPT_END " \$ " function fish_prompt set -e __CURRENT_GIT_STATUS set gitstatus "$__GIT_PROMPT_DIR/gitstatus.py" + set PROMPT_START "$IBlack$Time $ResetColor$Yellow" + set _GIT_STATUS (python $gitstatus) set __CURRENT_GIT_STATUS $_GIT_STATUS set GIT_BRANCH $__CURRENT_GIT_STATUS[1] - set GIT_REMOTE "$__CURRENT_GIT_STATUS[2]" - if test "." -eq $GIT_REMOTE - set -e GIT_REMOTE + + set __CURRENT_GIT_STATUS_PARAM_COUNT (count $__CURRENT_GIT_STATUS) + + if not test "0" -eq $__CURRENT_GIT_STATUS_PARAM_COUNT + set GIT_REMOTE "$__CURRENT_GIT_STATUS[2]" + set GIT_STAGED $__CURRENT_GIT_STATUS[3] + set GIT_CONFLICTS $__CURRENT_GIT_STATUS[4] + set GIT_CHANGED $__CURRENT_GIT_STATUS[5] + set GIT_UNTRACKED $__CURRENT_GIT_STATUS[6] + set GIT_CLEAN $__CURRENT_GIT_STATUS[7] end - set GIT_STAGED $__CURRENT_GIT_STATUS[3] - set GIT_CONFLICTS $__CURRENT_GIT_STATUS[4] - set GIT_CHANGED $__CURRENT_GIT_STATUS[5] - set GIT_UNTRACKED $__CURRENT_GIT_STATUS[6] - set GIT_CLEAN $__CURRENT_GIT_STATUS[7] if test -n "$__CURRENT_GIT_STATUS" set STATUS " $GIT_PROMPT_PREFIX$GIT_PROMPT_BRANCH$GIT_BRANCH$ResetColor" @@ -100,9 +104,10 @@ function fish_prompt end set STATUS "$STATUS$ResetColor$GIT_PROMPT_SUFFIX" - set PS1 "$PROMPT_START$STATUS$PROMPT_END" + + set PS1 "$PROMPT_START"(prompt_pwd)"$STATUS$PROMPT_END" else - set PS1 "$PROMPT_START$PROMPT_END" + set PS1 "$PROMPT_START"(prompt_pwd)"$ResetColor$PROMPT_END" end echo -e $PS1 end From 55f05b3470ad7b46295bc9ac45ce58f17371c3a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 21:34:10 +0200 Subject: [PATCH 05/26] Remove extra configs, cleanup --- config.fish | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/config.fish b/config.fish index 5fd6942..d222108 100644 --- a/config.fish +++ b/config.fish @@ -1,15 +1,3 @@ -set -x TERM xterm-256color - -set BROWSER open -set TERM xterm-256color - -set -g -x fish_greeting '' -set -g -x EDITOR nano - -if status --is-interactive - command fortune -s | cowsay -end - if set -q $__GIT_PROMPT_DIR set __GIT_PROMPT_DIR ~/.bash end @@ -35,7 +23,6 @@ set Magenta (set_color purple) # Purple # Various variables you might want for your PS1 prompt instead set Time (date +%X) -set PathShort (pwd|sed "s=$HOME=~=") # Default values for the appearance of the prompt. Configure at will. set GIT_PROMPT_PREFIX "(" @@ -51,7 +38,7 @@ set GIT_PROMPT_CLEAN "$BGreen✔" #Not applied two lines conention from https://github.com/magicmonty/bash-git-prompt/pull/5/files -set PROMPT_END " \$ " +set PROMPT_END " % " function fish_prompt set -e __CURRENT_GIT_STATUS From f2a38d66eff603a5b827c752e6aa243ed11da34d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 22:17:57 +0200 Subject: [PATCH 06/26] Rename, more compatibility with original version --- config.fish => gitprompt.fish | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) rename config.fish => gitprompt.fish (78%) diff --git a/config.fish b/gitprompt.fish similarity index 78% rename from config.fish rename to gitprompt.fish index d222108..032e054 100644 --- a/config.fish +++ b/gitprompt.fish @@ -13,38 +13,38 @@ set Blue (set_color blue) # Blue set WHITE (set_color white) # Bold -set BGreen (set_color green) # Green +set BGreen (set_color -o green) # Green # High Intensty -set IBlack (set_color black) # Black +set IBlack (set_color -o black) # Black # Bold High Intensty -set Magenta (set_color purple) # Purple +set Magenta (set_color -o purple) # Purple # Various variables you might want for your PS1 prompt instead set Time (date +%X) # Default values for the appearance of the prompt. Configure at will. -set GIT_PROMPT_PREFIX "(" -set GIT_PROMPT_SUFFIX ")" +set GIT_PROMPT_PREFIX "[" +set GIT_PROMPT_SUFFIX "]" set GIT_PROMPT_SEPARATOR "|" set GIT_PROMPT_BRANCH "$Magenta" -set GIT_PROMPT_STAGED "$Red}●" -set GIT_PROMPT_CONFLICTS "$Red✖" -set GIT_PROMPT_CHANGED "$Blue✚" +set GIT_PROMPT_STAGED "$Red}● " +set GIT_PROMPT_CONFLICTS "$Red✖ " +set GIT_PROMPT_CHANGED "$Blue✚ " set GIT_PROMPT_REMOTE " " set GIT_PROMPT_UNTRACKED "…" set GIT_PROMPT_CLEAN "$BGreen✔" #Not applied two lines conention from https://github.com/magicmonty/bash-git-prompt/pull/5/files -set PROMPT_END " % " +set PROMPT_END " \n$WHITE$Time$ResetColor \$ " function fish_prompt set -e __CURRENT_GIT_STATUS set gitstatus "$__GIT_PROMPT_DIR/gitstatus.py" - set PROMPT_START "$IBlack$Time $ResetColor$Yellow" + set PROMPT_START "$Yellow" set _GIT_STATUS (python $gitstatus) set __CURRENT_GIT_STATUS $_GIT_STATUS @@ -54,6 +54,10 @@ function fish_prompt if not test "0" -eq $__CURRENT_GIT_STATUS_PARAM_COUNT set GIT_REMOTE "$__CURRENT_GIT_STATUS[2]" + echo "-$GIT_REMOTE-" + if [ "." = "$GIT_REMOTE" ] + set -e GIT_REMOTE + end set GIT_STAGED $__CURRENT_GIT_STATUS[3] set GIT_CONFLICTS $__CURRENT_GIT_STATUS[4] set GIT_CHANGED $__CURRENT_GIT_STATUS[5] @@ -70,23 +74,23 @@ function fish_prompt set STATUS "$STATUS$GIT_PROMPT_SEPARATOR" - if test $GIT_STAGED -ne "0" + if [ $GIT_STAGED != "0" ] set STATUS "$STATUS$GIT_PROMPT_STAGED$GIT_STAGED$ResetColor" end - if test $GIT_CONFLICTS -ne "0" + if [ $GIT_CONFLICTS != "0" ] set STATUS "$STATUS$GIT_PROMPT_CONFLICTS$GIT_CONFLICTS$ResetColor" end - if test $GIT_CHANGED -ne "0" + if [ $GIT_CHANGED != "0" ] set STATUS "$STATUS$GIT_PROMPT_CHANGED$GIT_CHANGED$ResetColor" end - if test "$GIT_UNTRACKED" -ne "0" + if [ "$GIT_UNTRACKED" != "0" ] set STATUS "$STATUS$GIT_PROMPT_UNTRACKED$GIT_UNTRACKED$ResetColor" end - if test "$GIT_CLEAN" -eq "1" + if [ "$GIT_CLEAN" = "1" ] set STATUS "$STATUS$GIT_PROMPT_CLEAN" end From 63a59d699e30808db2cb6085d64bb1345dcea21e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 22:26:13 +0200 Subject: [PATCH 07/26] Cleanup log --- gitprompt.fish | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gitprompt.fish b/gitprompt.fish index 032e054..d50ffb6 100644 --- a/gitprompt.fish +++ b/gitprompt.fish @@ -48,13 +48,12 @@ function fish_prompt set _GIT_STATUS (python $gitstatus) set __CURRENT_GIT_STATUS $_GIT_STATUS - set GIT_BRANCH $__CURRENT_GIT_STATUS[1] set __CURRENT_GIT_STATUS_PARAM_COUNT (count $__CURRENT_GIT_STATUS) if not test "0" -eq $__CURRENT_GIT_STATUS_PARAM_COUNT + set GIT_BRANCH $__CURRENT_GIT_STATUS[1] set GIT_REMOTE "$__CURRENT_GIT_STATUS[2]" - echo "-$GIT_REMOTE-" if [ "." = "$GIT_REMOTE" ] set -e GIT_REMOTE end From 8b1dccc669a4aaebeb1379ddbbe06298db621e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 22:39:20 +0200 Subject: [PATCH 08/26] Fixes --- gitprompt.fish | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gitprompt.fish b/gitprompt.fish index d50ffb6..6a34f63 100644 --- a/gitprompt.fish +++ b/gitprompt.fish @@ -22,7 +22,7 @@ set IBlack (set_color -o black) # Black set Magenta (set_color -o purple) # Purple # Various variables you might want for your PS1 prompt instead -set Time (date +%X) +set Time (date +%R) # Default values for the appearance of the prompt. Configure at will. set GIT_PROMPT_PREFIX "[" @@ -32,13 +32,13 @@ set GIT_PROMPT_BRANCH "$Magenta" set GIT_PROMPT_STAGED "$Red}● " set GIT_PROMPT_CONFLICTS "$Red✖ " set GIT_PROMPT_CHANGED "$Blue✚ " -set GIT_PROMPT_REMOTE " " +set GIT_PROMPT_REMOTE "" set GIT_PROMPT_UNTRACKED "…" set GIT_PROMPT_CLEAN "$BGreen✔" #Not applied two lines conention from https://github.com/magicmonty/bash-git-prompt/pull/5/files -set PROMPT_END " \n$WHITE$Time$ResetColor \$ " +set PROMPT_END " \n$WHITE$Time$ResetColor \$ " function fish_prompt set -e __CURRENT_GIT_STATUS @@ -53,7 +53,7 @@ function fish_prompt if not test "0" -eq $__CURRENT_GIT_STATUS_PARAM_COUNT set GIT_BRANCH $__CURRENT_GIT_STATUS[1] - set GIT_REMOTE "$__CURRENT_GIT_STATUS[2]" + set GIT_REMOTE "$GIT_PROMPT_REMOTE$__CURRENT_GIT_STATUS[2]" if [ "." = "$GIT_REMOTE" ] set -e GIT_REMOTE end @@ -67,8 +67,8 @@ function fish_prompt if test -n "$__CURRENT_GIT_STATUS" set STATUS " $GIT_PROMPT_PREFIX$GIT_PROMPT_BRANCH$GIT_BRANCH$ResetColor" - if test -n $GIT_REMOTE - set STATUS "$STATUS$GIT_PROMPT_REMOTE$GIT_REMOTE$ResetColor" + if set -q $GIT_REMOTE + set STATUS "$STATUS$GIT_REMOTE$ResetColor" end set STATUS "$STATUS$GIT_PROMPT_SEPARATOR" @@ -95,9 +95,9 @@ function fish_prompt set STATUS "$STATUS$ResetColor$GIT_PROMPT_SUFFIX" - set PS1 "$PROMPT_START"(prompt_pwd)"$STATUS$PROMPT_END" + set PS1 "$PROMPT_START"(pwd|sed "s=$HOME=~=")"$STATUS$PROMPT_END" else - set PS1 "$PROMPT_START"(prompt_pwd)"$ResetColor$PROMPT_END" + set PS1 "$PROMPT_START"(pwd|sed "s=$HOME=~=")"$ResetColor$PROMPT_END" end echo -e $PS1 end From 567962926007ca1b659e67ae46e63822ee4ecc57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 22:56:14 +0200 Subject: [PATCH 09/26] Last fix :) --- gitprompt.fish | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gitprompt.fish b/gitprompt.fish index 6a34f63..3d60d02 100644 --- a/gitprompt.fish +++ b/gitprompt.fish @@ -29,10 +29,10 @@ set GIT_PROMPT_PREFIX "[" set GIT_PROMPT_SUFFIX "]" set GIT_PROMPT_SEPARATOR "|" set GIT_PROMPT_BRANCH "$Magenta" -set GIT_PROMPT_STAGED "$Red}● " +set GIT_PROMPT_STAGED "$Red● " set GIT_PROMPT_CONFLICTS "$Red✖ " set GIT_PROMPT_CHANGED "$Blue✚ " -set GIT_PROMPT_REMOTE "" +set GIT_PROMPT_REMOTE " " set GIT_PROMPT_UNTRACKED "…" set GIT_PROMPT_CLEAN "$BGreen✔" @@ -53,8 +53,8 @@ function fish_prompt if not test "0" -eq $__CURRENT_GIT_STATUS_PARAM_COUNT set GIT_BRANCH $__CURRENT_GIT_STATUS[1] - set GIT_REMOTE "$GIT_PROMPT_REMOTE$__CURRENT_GIT_STATUS[2]" - if [ "." = "$GIT_REMOTE" ] + set GIT_REMOTE "$__CURRENT_GIT_STATUS[2]" + if contains "." "$GIT_REMOTE" set -e GIT_REMOTE end set GIT_STAGED $__CURRENT_GIT_STATUS[3] @@ -67,8 +67,8 @@ function fish_prompt if test -n "$__CURRENT_GIT_STATUS" set STATUS " $GIT_PROMPT_PREFIX$GIT_PROMPT_BRANCH$GIT_BRANCH$ResetColor" - if set -q $GIT_REMOTE - set STATUS "$STATUS$GIT_REMOTE$ResetColor" + if set -q GIT_REMOTE + set STATUS "$STATUS$GIT_PROMPT_REMOTE$GIT_REMOTE$ResetColor" end set STATUS "$STATUS$GIT_PROMPT_SEPARATOR" @@ -95,7 +95,7 @@ function fish_prompt set STATUS "$STATUS$ResetColor$GIT_PROMPT_SUFFIX" - set PS1 "$PROMPT_START"(pwd|sed "s=$HOME=~=")"$STATUS$PROMPT_END" + set PS1 "$PROMPT_START"(pwd|sed "s=$HOME=~=")"$ResetColor$STATUS$PROMPT_END" else set PS1 "$PROMPT_START"(pwd|sed "s=$HOME=~=")"$ResetColor$PROMPT_END" end From 6bab284a10a2c24758c7e9664678b1a493610a18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 23:24:58 +0200 Subject: [PATCH 10/26] Proper support for external __GIT_PROMPT_DIR --- gitprompt.fish | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gitprompt.fish b/gitprompt.fish index 3d60d02..b55a272 100644 --- a/gitprompt.fish +++ b/gitprompt.fish @@ -1,5 +1,5 @@ -if set -q $__GIT_PROMPT_DIR - set __GIT_PROMPT_DIR ~/.bash +if not set -q __GIT_PROMPT_DIR + set __GIT_PROMPT_DIR ~/.bash end # Colors From 9e55d5f3e0c170c06fe15dee8e3839f49a450235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Thu, 30 May 2013 23:33:32 +0200 Subject: [PATCH 11/26] Refactor --- gitprompt.fish | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/gitprompt.fish b/gitprompt.fish index b55a272..7bcfe54 100644 --- a/gitprompt.fish +++ b/gitprompt.fish @@ -4,25 +4,22 @@ end # Colors # Reset -set ResetColor (set_color normal) # Text Reset +set ResetColor (set_color normal) # Text Reset # Regular Colors -set Red (set_color red) # Red -set Yellow (set_color yellow); # Yellow -set Blue (set_color blue) # Blue +set Red (set_color red) # Red +set Yellow (set_color yellow); # Yellow +set Blue (set_color blue) # Blue set WHITE (set_color white) # Bold -set BGreen (set_color -o green) # Green +set BGreen (set_color -o green) # Green # High Intensty -set IBlack (set_color -o black) # Black +set IBlack (set_color -o black) # Black # Bold High Intensty -set Magenta (set_color -o purple) # Purple - -# Various variables you might want for your PS1 prompt instead -set Time (date +%R) +set Magenta (set_color -o purple) # Purple # Default values for the appearance of the prompt. Configure at will. set GIT_PROMPT_PREFIX "[" @@ -36,16 +33,18 @@ set GIT_PROMPT_REMOTE " " set GIT_PROMPT_UNTRACKED "…" set GIT_PROMPT_CLEAN "$BGreen✔" -#Not applied two lines conention from https://github.com/magicmonty/bash-git-prompt/pull/5/files +function fish_prompt + + # Various variables you might want for your PS1 prompt instead + set Time (date +%R) + set PathShort (pwd|sed "s=$HOME=~=") -set PROMPT_END " \n$WHITE$Time$ResetColor \$ " + set PROMPT_START "$Yellow$PathShort$ResetColor" + set PROMPT_END " \n$WHITE$Time$ResetColor \$ " -function fish_prompt set -e __CURRENT_GIT_STATUS set gitstatus "$__GIT_PROMPT_DIR/gitstatus.py" - set PROMPT_START "$Yellow" - set _GIT_STATUS (python $gitstatus) set __CURRENT_GIT_STATUS $_GIT_STATUS @@ -95,11 +94,13 @@ function fish_prompt set STATUS "$STATUS$ResetColor$GIT_PROMPT_SUFFIX" - set PS1 "$PROMPT_START"(pwd|sed "s=$HOME=~=")"$ResetColor$STATUS$PROMPT_END" + set PS1 "$PROMPT_START$STATUS$PROMPT_END" else - set PS1 "$PROMPT_START"(pwd|sed "s=$HOME=~=")"$ResetColor$PROMPT_END" + set PS1 "$PROMPT_START$PROMPT_END" end + echo -e $PS1 + end From 626bd69cf7de271b815cabc1af9389d3c49c29d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Smyku=C5=82a?= Date: Fri, 31 May 2013 00:03:46 +0200 Subject: [PATCH 12/26] Example image from bash and fish shell with git prompt --- README.md | 2 +- gitprompt.png | Bin 0 -> 18725 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 gitprompt.png diff --git a/README.md b/README.md index 47f1d01..6eb8a82 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Informative git prompt for bash +# Informative git prompt for bash and fish This prompt is a port of the "Informative git prompt for zsh" which you can find [here](https://github.com/olivierverdier/zsh-git-prompt) diff --git a/gitprompt.png b/gitprompt.png new file mode 100644 index 0000000000000000000000000000000000000000..0cbdd6d2993da6144396e5de4aef03e08593f031 GIT binary patch literal 18725 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 W4YQ*XV5F1)0000 Date: Fri, 31 May 2013 00:10:06 +0200 Subject: [PATCH 13/26] Better image --- gitprompt.png | Bin 18725 -> 20484 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/gitprompt.png b/gitprompt.png index 0cbdd6d2993da6144396e5de4aef03e08593f031..c0ac2fa3d3cf4b6e754371b56289733ce30a3500 100644 GIT binary patch literal 20484 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%0DLy*OAAii4^ZERdDkD0BZa9 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 literal 18725 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 W4YQ*XV5F1)0000 Date: Fri, 31 May 2013 00:12:53 +0200 Subject: [PATCH 14/26] Refix image --- gitprompt.png | Bin 20484 -> 22550 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/gitprompt.png b/gitprompt.png index c0ac2fa3d3cf4b6e754371b56289733ce30a3500..c3d5c0580a42085a7ef80de1567e47d201bb8379 100644 GIT binary patch literal 22550 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%0DLy*OAAii4^ZERdDkD0BZa9 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 From dee331fb47be8f2fef91cd013cfa4f6f5c32b427 Mon Sep 17 00:00:00 2001 From: Sylvain Defresne Date: Sat, 1 Jun 2013 18:58:21 +0100 Subject: [PATCH 15/26] Prevent pollution of the global namespace & properly quote variables --- gitprompt.sh | 176 ++++++++++++++++++++++----------------------------- 1 file changed, 77 insertions(+), 99 deletions(-) diff --git a/gitprompt.sh b/gitprompt.sh index 84791fa..7b3e8b3 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -1,107 +1,85 @@ -if [ "x$__GIT_PROMPT_DIR" == "x" ] -then - __GIT_PROMPT_DIR=~/.bash -fi -# Colors -# Reset -ResetColor="\[\033[0m\]" # Text Reset - -# Regular Colors -Red="\[\033[0;31m\]" # Red -Yellow="\[\033[0;33m\]" # Yellow -Blue="\[\033[0;34m\]" # Blue -WHITE='\[\033[37m\]' - -# Bold -BGreen="\[\033[1;32m\]" # Green - -# High Intensty -IBlack="\[\033[0;90m\]" # Black - -# Bold High Intensty -Magenta="\[\033[1;95m\]" # Purple - -# Various variables you might want for your PS1 prompt instead -Time12a="\@" -PathShort="\w" - -# Default values for the appearance of the prompt. Configure at will. -GIT_PROMPT_PREFIX="[" -GIT_PROMPT_SUFFIX="]" -GIT_PROMPT_SEPARATOR="|" -GIT_PROMPT_BRANCH="${Magenta}" -GIT_PROMPT_STAGED="${Red}● " -GIT_PROMPT_CONFLICTS="${Red}✖ " -GIT_PROMPT_CHANGED="${Blue}✚ " -GIT_PROMPT_REMOTE=" " -GIT_PROMPT_UNTRACKED="…" -GIT_PROMPT_CLEAN="${BGreen}✔" - -PROMPT_START="$Yellow$PathShort$ResetColor" -PROMPT_END=" \n$WHITE$Time12a$ResetColor $ " - - -function update_current_git_vars() { - unset __CURRENT_GIT_STATUS - local gitstatus="${__GIT_PROMPT_DIR}/gitstatus.py" - - _GIT_STATUS=$(python $gitstatus) - __CURRENT_GIT_STATUS=($_GIT_STATUS) - GIT_BRANCH=${__CURRENT_GIT_STATUS[0]} - GIT_REMOTE=${__CURRENT_GIT_STATUS[1]} - if [[ "." == "$GIT_REMOTE" ]]; then - unset GIT_REMOTE - fi - GIT_STAGED=${__CURRENT_GIT_STATUS[2]} - GIT_CONFLICTS=${__CURRENT_GIT_STATUS[3]} - GIT_CHANGED=${__CURRENT_GIT_STATUS[4]} - GIT_UNTRACKED=${__CURRENT_GIT_STATUS[5]} - GIT_CLEAN=${__CURRENT_GIT_STATUS[6]} +function git_prompt_config() { + # Colors + local ResetColor="\[\033[0m\]" + local BoldGreen="\[\033[1;32m\]" + local BoldBlue="\[\033[1;34m\]" + local Magenta="\[\033[1;95m\]" + local Yellow="\[\033[1;33m\]" + local White="\[\033[37m\]" + local Blue="\[\033[0;34m\]" + local Red="\[\033[0;31m\]" + + # Default values for the appearance of the prompt. Configure at will. + GIT_PROMPT_PREFIX="[" + GIT_PROMPT_SUFFIX="]" + GIT_PROMPT_SEPARATOR="|" + GIT_PROMPT_BRANCH="${Magenta}" + GIT_PROMPT_STAGED="${Red}● " + GIT_PROMPT_CONFLICTS="${Red}✖ " + GIT_PROMPT_CHANGED="${Blue}✚ " + GIT_PROMPT_REMOTE=" " + GIT_PROMPT_UNTRACKED="…" + GIT_PROMPT_CLEAN="${BoldGreen}✔" + + PROMPT_START="${Yellow}\w${ResetColor}" + PROMPT_END=" \n${White}\@${ResetColor} $ " } function setGitPrompt() { - update_current_git_vars - set_virtualenv - - if [ -n "$__CURRENT_GIT_STATUS" ]; then - STATUS=" $GIT_PROMPT_PREFIX$GIT_PROMPT_BRANCH$GIT_BRANCH$ResetColor" - - if [ -n "$GIT_REMOTE" ]; then - STATUS="$STATUS$GIT_PROMPT_REMOTE$GIT_REMOTE$ResetColor" - fi - - STATUS="$STATUS$GIT_PROMPT_SEPARATOR" - if [ "$GIT_STAGED" -ne "0" ]; then - STATUS="$STATUS$GIT_PROMPT_STAGED$GIT_STAGED$ResetColor" - fi - - if [ "$GIT_CONFLICTS" -ne "0" ]; then - STATUS="$STATUS$GIT_PROMPT_CONFLICTS$GIT_CONFLICTS$ResetColor" - fi - if [ "$GIT_CHANGED" -ne "0" ]; then - STATUS="$STATUS$GIT_PROMPT_CHANGED$GIT_CHANGED$ResetColor" - fi - if [ "$GIT_UNTRACKED" -ne "0" ]; then - STATUS="$STATUS$GIT_PROMPT_UNTRACKED$GIT_UNTRACKED$ResetColor" - fi - if [ "$GIT_CLEAN" -eq "1" ]; then - STATUS="$STATUS$GIT_PROMPT_CLEAN" - fi - STATUS="$STATUS$ResetColor$GIT_PROMPT_SUFFIX" - - PS1="$PYTHON_VIRTUALENV$PROMPT_START$STATUS$PROMPT_END" - else - PS1="$PROMPT_START$PROMPT_END" - fi -} - -# Determine active Python virtualenv details. -function set_virtualenv () { - if test -z "$VIRTUAL_ENV" ; then - PYTHON_VIRTUALENV="" + local ResetColor="\[\033[0m\]" + + local -a GitStatus + GitStatus=($("${__GIT_PROMPT_DIR:-${HOME}/.bash}/gitstatus.py" 2>/dev/null)) + + local GIT_PROMPT_PREFIX + local GIT_PROMPT_SUFFIX + local GIT_PROMPT_SEPARATOR + local GIT_PROMPT_BRANCH + local GIT_PROMPT_STAGED + local GIT_PROMPT_CONFLICTS + local GIT_PROMPT_CHANGED + local GIT_PROMPT_REMOTE + local GIT_PROMPT_UNTRACKED + local GIT_PROMPT_CLEAN + local PROMPT_START + local PROMPT_END + git_prompt_config + + if [[ -n "${GitStatus}" ]]; then + local Status="${Status} ${GIT_PROMPT_PREFIX}" + + Status="${Status}${GIT_PROMPT_BRANCH}${GitStatus[0]}${ResetColor}" + if [[ "${GitStatus[1]}" != "." ]]; then + Status="${Status}${GIT_PROMPT_REMOTE}${GitStatus[1]}${ResetColor}" + fi + + Status="${Status}${GIT_PROMPT_SEPARATOR}" + if [[ "${GitStatus[2]}" -ne "0" ]]; then + Status="${Status}${GIT_PROMPT_STAGED}${GitStatus[2]}${ResetColor}" + fi + + if [[ "${GitStatus[3]}" -ne "0" ]]; then + Status="${Status}${GIT_PROMPT_CONFLICTS}${GitStatus[3]}${ResetColor}" + fi + if [[ "${GitStatus[4]}" -ne "0" ]]; then + Status="${Status}${GIT_PROMPT_CHANGED}${GitStatus[4]}${ResetColor}" + fi + if [[ "${GitStatus[5]}" -ne "0" ]]; then + Status="${Status}${GIT_PROMPT_UNTRACKED}${GitStatus[5]}${ResetColor}" + fi + if [[ "${GitStatus[6]}" -eq "1" ]]; then + Status="${Status}${GIT_PROMPT_CLEAN}${ResetColor}" + fi + Status="${Status}${GIT_PROMPT_SUFFIX}" + + PS1="${PROMPT_START}${Status}${PROMPT_END}" + if [[ -n "${VIRTUAL_ENV}" ]]; then + local Blue="\[\033[1;34m\]" + PS1="${Blue}($(basename "${VIRTUAL_ENV}"))${ResetColor} ${PS1}" + fi else - PYTHON_VIRTUALENV="${BLUE}(`basename \"$VIRTUAL_ENV\"`)${ResetColor} " + PS1="${PROMPT_START}${PROMPT_END}" fi } From ca5f2c7f28a8791cb73236b4471f08d069b7fd15 Mon Sep 17 00:00:00 2001 From: Marcin Sztolcman Date: Fri, 7 Jun 2013 10:59:05 +0200 Subject: [PATCH 16/26] use __GIT_STATUS_CMD instead of __GIT_PROMPT_DIR --- gitprompt.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gitprompt.sh b/gitprompt.sh index 84791fa..a5be8f3 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -1,6 +1,6 @@ -if [ "x$__GIT_PROMPT_DIR" == "x" ] +if [ "x$__GIT_STATUS_CMD" == "x" ] then - __GIT_PROMPT_DIR=~/.bash + __GIT_STATUS_CMD=~/.bash/gitstatus.py fi # Colors @@ -44,9 +44,8 @@ PROMPT_END=" \n$WHITE$Time12a$ResetColor $ " function update_current_git_vars() { unset __CURRENT_GIT_STATUS - local gitstatus="${__GIT_PROMPT_DIR}/gitstatus.py" - _GIT_STATUS=$(python $gitstatus) + _GIT_STATUS=$(python $__GIT_STATUS_CMD) __CURRENT_GIT_STATUS=($_GIT_STATUS) GIT_BRANCH=${__CURRENT_GIT_STATUS[0]} GIT_REMOTE=${__CURRENT_GIT_STATUS[1]} From bd5710498fb4566a7eab1ffda714bac30d228c2c Mon Sep 17 00:00:00 2001 From: Martin Gondermann Date: Wed, 3 Jul 2013 08:25:21 +0200 Subject: [PATCH 17/26] Added example image for fish prompt --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 6eb8a82..f4c751f 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ In particular the branch name, difference with remote branch, number of files st The prompt may look like the following: +![Example prompt](gitprompt.png) + * ``(master↑3|✚1)``: on branch ``master``, ahead of remote by 3 commits, 1 file changed but not staged * ``(status|●2)``: on branch ``status``, 2 files staged * ``(master|✚7…)``: on branch ``master``, 7 files changed, some files untracked From 43a4f3c9eee161b31c7756ac00e5d521b9c29b5b Mon Sep 17 00:00:00 2001 From: Martin Gondermann Date: Wed, 3 Jul 2013 10:57:04 +0200 Subject: [PATCH 18/26] Fixed Issue #6: Definig $PROMPT_START $PROMPT_END out of gitprompt.sh It is now possible to override PROMPT_START and PROMPT_END by exporting the variables GIT_PROMPT_START and GIT_PROMPT_END --- gitprompt.sh | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/gitprompt.sh b/gitprompt.sh index bc5cc65..10e1402 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -50,13 +50,22 @@ function git_prompt_config() # local Time12a="(\$(date +%H:%M:%S))" # local Time12a="(\@))" local PathShort="\w" - - PROMPT_START="${Yellow}${PathShort}${ResetColor}" - PROMPT_END=" \n${White}${Time12a}${ResetColor} $ " + + if [ "x${GIT_PROMPT_START}" == "x" ]; then + PROMPT_START="${Yellow}${PathShort}${ResetColor}" + else + PROMPT_START="${GIT_PROMPT_START}" + fi + + if [ "x${GIT_PROMPT_END}" == "x" ]; then + PROMPT_END=" \n${White}${Time12a}${ResetColor} $ " + else + PROMPT_END="${GIT_PROMPT_END}" + fi EMPTY_PROMPT="${PROMPT_START}${PROMPT_END}" - # fetch remote revisions every other $GIT_PROMPT_FETCH_TIMEOUT (default 5) minutes + # fetch remote revisions every other $GIT_PROMPT_FETCH_TIMEOUT (default 5) minutes GIT_PROMPT_FETCH_TIMEOUT=${1-5} if [ "x$__GIT_STATUS_CMD" == "x" ] then @@ -91,7 +100,7 @@ function setGitPrompt() { PS1="${EMPTY_PROMPT}" return fi - + local FETCH_HEAD="${repo}/.git/FETCH_HEAD" # Fech repo if local is stale for more than $GIT_FETCH_TIMEOUT minutes if [[ ! -e "${FETCH_HEAD}" || -e `find ${FETCH_HEAD} -mmin +${GIT_PROMPT_FETCH_TIMEOUT}` ]] @@ -101,7 +110,7 @@ function setGitPrompt() { local -a GitStatus GitStatus=($("${__GIT_STATUS_CMD}" 2>/dev/null)) - + local GIT_BRANCH=${GitStatus[0]} local GIT_REMOTE=${GitStatus[1]} if [[ "." == "$GIT_REMOTE" ]]; then From d7f5d3bb1721f52e13a3cc7874be6a920d5fd73b Mon Sep 17 00:00:00 2001 From: Martin Gondermann Date: Thu, 4 Jul 2013 11:24:05 +0200 Subject: [PATCH 19/26] Changed the last line of gitprompt.sh to PROMPT_COMMAND=$PROMPT_COMMAND;setGitPrompt This would allow previous PROMPT_COMMAND's too (for example for seting the window title). Fixes #3 --- gitprompt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitprompt.sh b/gitprompt.sh index 10e1402..1715a96 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -159,4 +159,4 @@ function setGitPrompt() { fi } -PROMPT_COMMAND=setGitPrompt +PROMPT_COMMAND=$PROMPT_COMMAND;setGitPrompt From c869a349f1c6eac999197baf9d8f23275fd7f490 Mon Sep 17 00:00:00 2001 From: Martin Gondermann Date: Sun, 7 Jul 2013 22:40:55 +0200 Subject: [PATCH 20/26] PROMPT_COMMAND=$PROMPT_COMMAND;setGitPrompt did not work correctly (fixes Issue #13) --- gitprompt.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gitprompt.sh b/gitprompt.sh index 1715a96..7968784 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -159,4 +159,9 @@ function setGitPrompt() { fi } -PROMPT_COMMAND=$PROMPT_COMMAND;setGitPrompt +if [ -z "$PROMPT_COMMAND" ]; then + PROMPT_COMMAND=setGitPrompt +else + PROMPT_COMMAND="$PROMPT_COMMAND;setGitPrompt" +fi + From 08355a2306d5e79a3908449958a2fa84ca562594 Mon Sep 17 00:00:00 2001 From: Martin Gondermann Date: Fri, 26 Jul 2013 12:25:52 +0200 Subject: [PATCH 21/26] Fixed tabs --- gitprompt.sh | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/gitprompt.sh b/gitprompt.sh index 7968784..a361d52 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -95,18 +95,18 @@ function setGitPrompt() { git_prompt_config - local repo=`git rev-parse --show-toplevel 2> /dev/null` - if [[ ! -e "${repo}" ]]; then - PS1="${EMPTY_PROMPT}" - return - fi - - local FETCH_HEAD="${repo}/.git/FETCH_HEAD" - # Fech repo if local is stale for more than $GIT_FETCH_TIMEOUT minutes - if [[ ! -e "${FETCH_HEAD}" || -e `find ${FETCH_HEAD} -mmin +${GIT_PROMPT_FETCH_TIMEOUT}` ]] - then - git fetch --quiet - fi + local repo=`git rev-parse --show-toplevel 2> /dev/null` + if [[ ! -e "${repo}" ]]; then + PS1="${EMPTY_PROMPT}" + return + fi + + local FETCH_HEAD="${repo}/.git/FETCH_HEAD" + # Fech repo if local is stale for more than $GIT_FETCH_TIMEOUT minutes + if [[ ! -e "${FETCH_HEAD}" || -e `find ${FETCH_HEAD} -mmin +${GIT_PROMPT_FETCH_TIMEOUT}` ]] + then + git fetch --quiet + fi local -a GitStatus GitStatus=($("${__GIT_STATUS_CMD}" 2>/dev/null)) @@ -137,15 +137,19 @@ function setGitPrompt() { if [ "${GIT_CONFLICTS}" -ne "0" ]; then STATUS="${STATUS}${GIT_PROMPT_CONFLICTS}${GIT_CONFLICTS}${ResetColor}" fi + if [ "${GIT_CHANGED}" -ne "0" ]; then STATUS="${STATUS}${GIT_PROMPT_CHANGED}${GIT_CHANGED}${ResetColor}" fi + if [ "${GIT_UNTRACKED}" -ne "0" ]; then STATUS="${STATUS}${GIT_PROMPT_UNTRACKED}${GIT_UNTRACKED}${ResetColor}" fi + if [ "${GIT_CLEAN}" -eq "1" ]; then STATUS="${STATUS}${GIT_PROMPT_CLEAN}" fi + STATUS="${STATUS}${ResetColor}${GIT_PROMPT_SUFFIX}" From 159c5e32d440b48cb0660235fd4362b0535ec9f5 Mon Sep 17 00:00:00 2001 From: Martin Gondermann Date: Fri, 26 Jul 2013 12:36:09 +0200 Subject: [PATCH 22/26] No more error on new repository. Fixes #9 --- gitprompt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitprompt.sh b/gitprompt.sh index a361d52..7a1ed16 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -105,7 +105,7 @@ function setGitPrompt() { # Fech repo if local is stale for more than $GIT_FETCH_TIMEOUT minutes if [[ ! -e "${FETCH_HEAD}" || -e `find ${FETCH_HEAD} -mmin +${GIT_PROMPT_FETCH_TIMEOUT}` ]] then - git fetch --quiet + [[ -n $(git remote show) ]] && git fetch --quiet fi local -a GitStatus From dfc29d14b4d0c2d64df6795bd37ae9a8dad06593 Mon Sep 17 00:00:00 2001 From: Martin Gondermann Date: Fri, 26 Jul 2013 12:36:09 +0200 Subject: [PATCH 23/26] No more error on new repository. Fixes #14 --- gitprompt.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitprompt.sh b/gitprompt.sh index a361d52..7a1ed16 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -105,7 +105,7 @@ function setGitPrompt() { # Fech repo if local is stale for more than $GIT_FETCH_TIMEOUT minutes if [[ ! -e "${FETCH_HEAD}" || -e `find ${FETCH_HEAD} -mmin +${GIT_PROMPT_FETCH_TIMEOUT}` ]] then - git fetch --quiet + [[ -n $(git remote show) ]] && git fetch --quiet fi local -a GitStatus From 3cf7fbba8db5882596d9059b73293cb45761b12b Mon Sep 17 00:00:00 2001 From: Jack Sullivan Date: Sat, 27 Jul 2013 18:31:39 -0400 Subject: [PATCH 24/26] Added support for tags If you are on a commit hash that has a tag, it will display the tag's name instead of the commit hash on the prompt. --- gitstatus.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gitstatus.py b/gitstatus.py index 63f4e44..a61187c 100755 --- a/gitstatus.py +++ b/gitstatus.py @@ -40,8 +40,13 @@ else: remote = '' +tag, tag_error = Popen(['git', 'describe', '--exact-match'], stdout=PIPE, stderr=PIPE).communicate() + if not branch: # not on any branch - branch = symbols['prehash']+ Popen(['git','rev-parse','--short','HEAD'], stdout=PIPE).communicate()[0][:-1] + if tag: # if we are on a tag, print the tag's name + branch = tag + else: + branch = symbols['prehash']+ Popen(['git','rev-parse','--short','HEAD'], stdout=PIPE).communicate()[0][:-1] else: remote_name = Popen(['git','config','branch.%s.remote' % branch], stdout=PIPE).communicate()[0].strip() if remote_name: From 238ab58560febdcf662f099ba81f2a51aa6a0a44 Mon Sep 17 00:00:00 2001 From: Martin Goldhahn Date: Sun, 4 Aug 2013 17:50:07 +0200 Subject: [PATCH 25/26] move configuration of git_prompt_dir inside a function --- gitprompt.sh | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/gitprompt.sh b/gitprompt.sh index 7a1ed16..f9e5c69 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -1,16 +1,19 @@ #!/bin/sh -# assume the gitstatus.py is in the same directory as this script -# code thanks to http://stackoverflow.com/questions/59895 -if [ -z "${__GIT_PROMPT_DIR}" ]; then - SOURCE="${BASH_SOURCE[0]}" - while [ -h "${SOURCE}" ]; do - DIR="$( cd -P "$( dirname "${SOURCE}" )" && pwd )" - SOURCE="$(readlink "${SOURCE}")" - [[ $SOURCE != /* ]] && SOURCE="${DIR}/${SOURCE}" - done - __GIT_PROMPT_DIR="$( cd -P "$( dirname "${SOURCE}" )" && pwd )" +function git_prompt_dir() +{ + # assume the gitstatus.py is in the same directory as this script + # code thanks to http://stackoverflow.com/questions/59895 + if [ -z "${__GIT_PROMPT_DIR}" ]; then + local SOURCE="${BASH_SOURCE[0]}" + while [ -h "${SOURCE}" ]; do + local DIR="$( cd -P "$( dirname "${SOURCE}" )" && pwd )" + SOURCE="$(readlink "${SOURCE}")" + [[ $SOURCE != /* ]] && SOURCE="${DIR}/${SOURCE}" + done + __GIT_PROMPT_DIR="$( cd -P "$( dirname "${SOURCE}" )" && pwd )" fi +} function git_prompt_config() { @@ -31,7 +34,7 @@ function git_prompt_config() local Yellow="\[\033[0;33m\]" local White='\[\033[37m\]' local Red="\[\033[0;31m\]" - Blue="\[\033[0;34m\]" + local Blue="\[\033[0;34m\]" # Default values for the appearance of the prompt. Configure at will. GIT_PROMPT_PREFIX="[" @@ -69,7 +72,8 @@ function git_prompt_config() GIT_PROMPT_FETCH_TIMEOUT=${1-5} if [ "x$__GIT_STATUS_CMD" == "x" ] then - __GIT_STATUS_CMD="${__GIT_PROMPT_DIR:-${HOME}/.bash}/gitstatus.py" + git_prompt_dir + __GIT_STATUS_CMD="${__GIT_PROMPT_DIR}/gitstatus.py" fi } From ff7575ccdcc556e5ffb591bff85b8b7ac4e2f985 Mon Sep 17 00:00:00 2001 From: Martin Goldhahn Date: Sun, 4 Aug 2013 19:06:28 +0200 Subject: [PATCH 26/26] apply git prompt only on directories belonging to a git repository --- .gitignore | 2 ++ gitprompt.sh | 6 ++++++ 2 files changed, 8 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e7683df --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ +*.bak diff --git a/gitprompt.sh b/gitprompt.sh index f9e5c69..cb7254d 100644 --- a/gitprompt.sh +++ b/gitprompt.sh @@ -98,6 +98,8 @@ function setGitPrompt() { local __GIT_STATUS_CMD git_prompt_config + + EMPTY_PROMPT=${OLD_GITPROMPT} local repo=`git rev-parse --show-toplevel 2> /dev/null` if [[ ! -e "${repo}" ]]; then @@ -167,6 +169,10 @@ function setGitPrompt() { fi } +if [ -z "$OLD_GITPROMPT" ]; then + OLD_GITPROMPT=$PS1 +fi + if [ -z "$PROMPT_COMMAND" ]; then PROMPT_COMMAND=setGitPrompt else