mirror of
https://github.com/git/git.git
synced 2024-12-01 05:54:16 +08:00
Merge branch 'tp/completion'
* tp/completion: Fixup: Add bare repository indicator for __git_ps1 Add bare repository indicator for __git_ps1 completion: More fixes to prevent unbound variable errors completion: Better __git_ps1 support when not in working directory completion: Use consistent if [...] convention, not "test" completion: For consistency, change "git rev-parse" to __gitdir calls
This commit is contained in:
commit
229e65823a
@ -62,7 +62,7 @@ esac
|
||||
__gitdir ()
|
||||
{
|
||||
if [ -z "${1-}" ]; then
|
||||
if [ -n "$__git_dir" ]; then
|
||||
if [ -n "${__git_dir-}" ]; then
|
||||
echo "$__git_dir"
|
||||
elif [ -d .git ]; then
|
||||
echo .git
|
||||
@ -80,68 +80,72 @@ __gitdir ()
|
||||
# returns text to add to bash PS1 prompt (includes branch name)
|
||||
__git_ps1 ()
|
||||
{
|
||||
local g="$(git rev-parse --git-dir 2>/dev/null)"
|
||||
local g="$(__gitdir)"
|
||||
if [ -n "$g" ]; then
|
||||
local r
|
||||
local b
|
||||
if [ -d "$g/rebase-apply" ]
|
||||
then
|
||||
if test -f "$g/rebase-apply/rebasing"
|
||||
then
|
||||
if [ -d "$g/rebase-apply" ]; then
|
||||
if [ -f "$g/rebase-apply/rebasing" ]; then
|
||||
r="|REBASE"
|
||||
elif test -f "$g/rebase-apply/applying"
|
||||
then
|
||||
elif [ -f "$g/rebase-apply/applying" ]; then
|
||||
r="|AM"
|
||||
else
|
||||
r="|AM/REBASE"
|
||||
fi
|
||||
b="$(git symbolic-ref HEAD 2>/dev/null)"
|
||||
elif [ -f "$g/rebase-merge/interactive" ]
|
||||
then
|
||||
elif [ -f "$g/rebase-merge/interactive" ]; then
|
||||
r="|REBASE-i"
|
||||
b="$(cat "$g/rebase-merge/head-name")"
|
||||
elif [ -d "$g/rebase-merge" ]
|
||||
then
|
||||
elif [ -d "$g/rebase-merge" ]; then
|
||||
r="|REBASE-m"
|
||||
b="$(cat "$g/rebase-merge/head-name")"
|
||||
elif [ -f "$g/MERGE_HEAD" ]
|
||||
then
|
||||
elif [ -f "$g/MERGE_HEAD" ]; then
|
||||
r="|MERGING"
|
||||
b="$(git symbolic-ref HEAD 2>/dev/null)"
|
||||
else
|
||||
if [ -f "$g/BISECT_LOG" ]
|
||||
then
|
||||
if [ -f "$g/BISECT_LOG" ]; then
|
||||
r="|BISECTING"
|
||||
fi
|
||||
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
|
||||
then
|
||||
if ! b="$(git describe --exact-match HEAD 2>/dev/null)"
|
||||
then
|
||||
b="$(cut -c1-7 "$g/HEAD")..."
|
||||
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"; then
|
||||
if ! b="$(git describe --exact-match HEAD 2>/dev/null)"; then
|
||||
if [ -r "$g/HEAD" ]; then
|
||||
b="$(cut -c1-7 "$g/HEAD")..."
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
local w
|
||||
local i
|
||||
local c
|
||||
|
||||
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="#"
|
||||
if [ "true" = "$(git rev-parse --is-inside-git-dir 2>/dev/null)" ]; then
|
||||
if [ "true" = "$(git config --bool core.bare 2>/dev/null)" ]; then
|
||||
c="BARE:"
|
||||
else
|
||||
b="GIT_DIR!"
|
||||
fi
|
||||
elif [ "true" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ]; then
|
||||
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ]; then
|
||||
if [ "$(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
|
||||
fi
|
||||
|
||||
if [ -n "${1-}" ]; then
|
||||
printf "$1" "${b##refs/heads/}$w$i$r"
|
||||
else
|
||||
printf " (%s)" "${b##refs/heads/}$w$i$r"
|
||||
if [ -n "$b" ]; then
|
||||
if [ -n "${1-}" ]; then
|
||||
printf "$1" "$c${b##refs/heads/}$w$i$r"
|
||||
else
|
||||
printf " (%s)" "$c${b##refs/heads/}$w$i$r"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@ -299,7 +303,7 @@ __git_remotes ()
|
||||
|
||||
__git_merge_strategies ()
|
||||
{
|
||||
if [ -n "$__git_merge_strategylist" ]; then
|
||||
if [ -n "${__git_merge_strategylist-}" ]; then
|
||||
echo "$__git_merge_strategylist"
|
||||
return
|
||||
fi
|
||||
@ -385,7 +389,7 @@ __git_complete_revlist ()
|
||||
|
||||
__git_all_commands ()
|
||||
{
|
||||
if [ -n "$__git_all_commandlist" ]; then
|
||||
if [ -n "${__git_all_commandlist-}" ]; then
|
||||
echo "$__git_all_commandlist"
|
||||
return
|
||||
fi
|
||||
@ -403,7 +407,7 @@ __git_all_commandlist="$(__git_all_commands 2>/dev/null)"
|
||||
|
||||
__git_porcelain_commands ()
|
||||
{
|
||||
if [ -n "$__git_porcelain_commandlist" ]; then
|
||||
if [ -n "${__git_porcelain_commandlist-}" ]; then
|
||||
echo "$__git_porcelain_commandlist"
|
||||
return
|
||||
fi
|
||||
@ -1841,7 +1845,7 @@ _gitk ()
|
||||
__git_has_doubledash && return
|
||||
|
||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
local g="$(git rev-parse --git-dir 2>/dev/null)"
|
||||
local g="$(__gitdir)"
|
||||
local merge=""
|
||||
if [ -f $g/MERGE_HEAD ]; then
|
||||
merge="--merge"
|
||||
|
Loading…
Reference in New Issue
Block a user