mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
bash: offer to show (un)staged changes
Add a bit of code to __git_ps1 that lets it append '*' to the branch name if there are any unstaged changes, and '+' if there are any staged changes. Since this is a rather expensive operation and will force a lot of data into the cache whenever you first enter a repository, you have to enable it manually by setting GIT_PS1_SHOWDIRTYSTATE to a nonempty value. The configuration variable bash.showDirtyState can then be used to disable it again for some repositories. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e656fc97a2
commit
738a94a9f6
|
@ -34,6 +34,12 @@
|
|||
# are currently in a git repository. The %s token will be
|
||||
# the name of the current branch.
|
||||
#
|
||||
# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty
|
||||
# value, unstaged (*) and staged (+) changes will be shown next
|
||||
# to the branch name. You can configure this per-repository
|
||||
# with the bash.showDirtyState variable, which defaults to true
|
||||
# once GIT_PS1_SHOWDIRTYSTATE is enabled.
|
||||
#
|
||||
# To submit patches:
|
||||
#
|
||||
# *) Read Documentation/SubmittingPatches
|
||||
|
@ -116,10 +122,26 @@ __git_ps1 ()
|
|||
fi
|
||||
fi
|
||||
|
||||
local w
|
||||
local i
|
||||
|
||||
if test -n "$GIT_PS1_SHOWDIRTYSTATE"; then
|
||||
if test "$(git config --bool bash.showDirtyState)" != "false"; then
|
||||
git diff --no-ext-diff --ignore-submodules \
|
||||
--quiet --exit-code || w="*"
|
||||
if git rev-parse --quiet --verify HEAD >/dev/null; then
|
||||
git diff-index --cached --quiet \
|
||||
--ignore-submodules HEAD -- || i="+"
|
||||
else
|
||||
i="#"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${1-}" ]; then
|
||||
printf "$1" "${b##refs/heads/}$r"
|
||||
printf "$1" "${b##refs/heads/}$w$i$r"
|
||||
else
|
||||
printf " (%s)" "${b##refs/heads/}$r"
|
||||
printf " (%s)" "${b##refs/heads/}$w$i$r"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue