Expand use of GIT_REPO_INFO. Foundation work for prefetch support.

This commit is contained in:
Darren 'Tadgy' Austin 2023-10-02 20:40:52 +01:00
commit 1c2393d0b3

17
.bashrc
View file

@ -24,23 +24,24 @@ __prompt_git_status() {
# Get some repository information.
# shellcheck disable=SC2207
GIT_REPO_INFO=( $(git rev-parse --is-bare-repository --is-shallow-repository --is-inside-git-dir --is-inside-work-tree --short HEAD 2>/dev/null) )
GIT_REPO_INFO=( $(git rev-parse --show-toplevel --git-dir --is-bare-repository --is-shallow-repository --is-inside-git-dir --is-inside-work-tree \
--glob=prefetch 2>/dev/null) )
ERR="$?"
# Do nothing if there's an error.
(( ERR >= 1 )) || { (( ERR == 128 )) && (( ${#GIT_REPO_INFO[@]} != 3 )); } && return "$RET"
(( ERR >= 1 )) && return "$RET"
# Generate the prompt.
if [[ "${GIT_REPO_INFO[2]}" == "true" ]]; then
if [[ "${GIT_REPO_INFO[4]}" == "true" ]]; then
# If in the git directory, use a special branch marker.
GIT_PROMPT+="!GIT_DIR!"
elif [[ "${GIT_REPO_INFO[3]}" == "true" ]]; then
elif [[ "${GIT_REPO_INFO[5]}" == "true" ]]; then
# If in the working directory, generate the prompt.
# Add status markers.
[[ -n "$GIT_PROMPT_SHOW_TYPE" ]] && {
if [[ "${GIT_REPO_INFO[0]}" == "true" ]]; then
if [[ "${GIT_REPO_INFO[2]}" == "true" ]]; then
GIT_PROMPT+="B:"
elif [[ "${GIT_REPO_INFO[1]}" == "true" ]]; then
elif [[ "${GIT_REPO_INFO[3]}" == "true" ]]; then
GIT_PROMPT+="S:"
fi
}
@ -49,7 +50,7 @@ __prompt_git_status() {
GIT_PROMPT+="$(git describe --contains --all HEAD)"
# Add a marker if directory is ignored, there's untracked files or a stash.
if [[ -n "$GIT_PROMPT_SHOW_IGNORED" ]] && git check-ignore -q "${PWD#"$(git rev-parse --show-toplevel)/"}"; then
if [[ -n "$GIT_PROMPT_SHOW_IGNORED" ]] && git check-ignore -q "${PWD#"${GIT_REPO_INFO[0]}/"}"; then
GIT_PROMPT+=" !"
elif [[ -n "$GIT_PROMPT_SHOW_UNSTAGED" ]] && git ls-files --modified --exclude-standard --directory --error-unmatch -- ':/*' >/dev/null 2>&1; then
GIT_PROMPT+=" *"
@ -63,7 +64,7 @@ __prompt_git_status() {
# Get upstream status.
[[ -n "$GIT_PROMPT_SHOW_UPSTREAM" ]] || [[ -n "$GIT_PROMPT_SHOW_UPSTREAM_EXTENDED" ]] && {
COUNT="$(git rev-list --count --left-right '@{upstream}'...HEAD 2>/dev/null | tr '[:blank:]' ' ')"
COUNT="$(git rev-list --count --left-right ${GIT_REPO_INFO[6]:-\'@\{upstream\}\'}...HEAD 2>/dev/null | tr '[:blank:]' ' ')"
case "$COUNT" in
"")
# No upstream.