-
-
Save nh2/1e7e05a2b9f2ea229f23 to your computer and use it in GitHub Desktop.
Functoin for the fish shell that gets the current git branch + if a merge/rebase etc. is in progress (port of GIt's __git_ps1); adapted to work for newer versions of fish (e.g. 2.2.0)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Functoin for the fish shell that gets the current git branch + if a merge/rebase etc. is in progress (port of GIt's __git_ps1); adapted to work for newer versions of fish (e.g. 2.2.0) | |
function __git_ps1 | |
set -l g (git rev-parse --git-dir ^/dev/null) | |
if [ -n "$g" ] | |
set -l r "" | |
set -l b "" | |
if [ -d "$g/rebase" ] | |
if [ -f "$g/rebase/rebasing" ] | |
set r "|REBASE" | |
else if [ -f "$g/rebase/applying" ] | |
set r "|AM" | |
else | |
set r "|AM/REBASE" | |
end | |
set b (git symbolic-ref HEAD ^/dev/null) | |
else if [ -f "$g/rebase-merge/interactive" ] | |
set r "|REBASE-i" | |
set b (cat "$g/rebase-merge/head-name") | |
else if [ -d "$g/rebase-merge" ] | |
set r "|REBASE-m" | |
set b (cat "$g/rebase-merge/head-name") | |
else if [ -f "$g/MERGE_HEAD" ] | |
set r "|MERGING" | |
set b (git symbolic-ref HEAD ^/dev/null) | |
else | |
if [ -f "$g/BISECT_LOG" ] | |
set r "|BISECTING" | |
end | |
set b (git symbolic-ref HEAD ^/dev/null) | |
if [ -z $b ] | |
set b (git describe --exact-match HEAD ^/dev/null) | |
if [ -z $b ] | |
set b (cut -c1-7 "$g/HEAD") | |
set b "$b..." | |
end | |
end | |
end | |
if not test $argv | |
set argv " (%s)" | |
end | |
set b (echo $b | sed -e 's|^refs/heads/||') | |
printf $argv "$b$r" ^/dev/null | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Changes I had to make over these two:
in order for it to work with my newer fish 2.2.0:
elseif
to newerelse if
syntax (see here)$g/../.dotest
to$g/rebase
and$g/.dotest-merge
to$g/rebase-merge
(see here)