don't show git status inside `.git` dir

master
lowne 2 years ago
parent c774c260d0
commit 99ea7d3425

@ -1,7 +1,9 @@
# git helper functions # git helper functions
# unused # unused
function __git_is_repo -d "Test if the current directory is a Git repository" function __git_is_repo -d "Test if the current directory is a Git repository"
if not command git rev-parse --git-dir > /dev/null 2>/dev/null # don't consider the .git dir as part of the repo
# so we use --show-toplevel (which fails inside .git) instead of --git-dir
if not command git rev-parse --show-toplevel > /dev/null 2>/dev/null
return 1 return 1
end end
end end
@ -140,58 +142,60 @@ function fish_prompt
segment $base_color " $pwd_info[3] " segment $base_color " $pwd_info[3] "
end end
if set branch_name (__git_branch_name) if __git_is_repo
if set branch_name (__git_branch_name)
if __git_is_stashed if __git_is_stashed
segment "$text_color" blue "♺" # "╍╍" segment "$text_color" blue "♺" # "╍╍"
end end
# set -l untracked_files (__git_untracked_files) # set -l untracked_files (__git_untracked_files)
# if test "0" != "$untracked_files" # if test "0" != "$untracked_files"
# segment "$text_color" blue "$untracked_files?" #﹖" # segment "$text_color" blue "$untracked_files?" #﹖"
if __git_has_untracked if __git_has_untracked
segment "$text_color" blue "?" #﹖" segment "$text_color" blue "?" #﹖"
end end
# set -l dirty_files (__git_dirty_files) # set -l dirty_files (__git_dirty_files)
# if test "0" != "$dirty_files" # if test "0" != "$dirty_files"
# segment "$text_color" red "$dirty_files" # segment "$text_color" red "$dirty_files"
if __git_is_dirty if __git_is_dirty
segment "$text_color" red "⁝" # " ╍" segment "$text_color" red "⁝" # " ╍"
end end
# set -l staged_files (__git_staged_files) # set -l staged_files (__git_staged_files)
# if test "0" != "$staged_files" # if test "0" != "$staged_files"
if __git_is_staged if __git_is_staged
segment "$text_color" yellow "🮸 " #"🮶" segment "$text_color" yellow "🮸 " #"🮶"
end end
set -l git_color "$split_color" "$text_color" set -l git_color "$split_color" "$text_color"
set -l git_glyph "" set -l git_glyph ""
if __git_is_detached_head if __git_is_detached_head
set git_glyph "➤" set git_glyph "➤"
if __git_is_tag if __git_is_tag
set git_glyph "🏷" set git_glyph "🏷"
end
end end
end
set -l prompt set -l prompt
# set -l git_ahead (__git_ahead "🠕 " "🠗 " "⤲ ") # set -l git_ahead (__git_ahead "🠕 " "🠗 " "⤲ ")
set -l git_ahead (__git_ahead) set -l git_ahead (__git_ahead)
if test -z "$git_ahead" if test -z "$git_ahead"
else if test "+" = "$git_ahead" else if test "+" = "$git_ahead"
set git_ahead "🠕" set git_ahead "🠕"
set git_color $text_color green set git_color $text_color green
else if test "-" = "$git_ahead" else if test "-" = "$git_ahead"
set git_ahead "🠗" set git_ahead "🠗"
set git_color $text_color yellow set git_color $text_color yellow
else else
set git_ahead "⤲" set git_ahead "⤲"
set git_color $text_color red set git_color $text_color red
end end
if test "$branch_name" = master -o "$branch_name" = main if test "$branch_name" = master -o "$branch_name" = main
set prompt " $git_glyph $git_ahead" set prompt " $git_glyph $git_ahead"
else else
set prompt " $git_glyph $branch_name $git_ahead" set prompt " $git_glyph $branch_name $git_ahead"
end
segment "$git_color[1]" "$git_color[2]" "$prompt"
end end
segment "$git_color[1]" "$git_color[2]" "$prompt"
end end
segment $base_color " $dir"(set_color $text_color)"$base " segment $base_color " $dir"(set_color $text_color)"$base "

Loading…
Cancel
Save