diff --git a/.bashrc b/.bashrc index 64cc780..a945ff0 100644 --- a/.bashrc +++ b/.bashrc @@ -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.