refactor: support zsh
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
export EDITOR=vim
|
export EDITOR=vim
|
||||||
|
|
||||||
# generated by ./bin/generate-bash-prompt
|
# generated by ./bin/generate-bash-prompt
|
||||||
export PS1='[\[\e[0;35m\]\u@\h\[\e[0m\] \[\e[1;34m\]\W\[\e[0m\]]\$ '
|
# export PS1='[\[\e[0;35m\]\u@\h\[\e[0m\] \[\e[1;34m\]\W\[\e[0m\]]\$ '
|
||||||
|
export PS1='[\[\e[0;35m\]\u@\h\[\e[0m\] \[\e[1;34m\]\W\[\e[0;32m\]$(__git_ps1 " %s")\[\e[0m\]]\$ '
|
||||||
|
|
||||||
if [ -f ~/.bashrc ]; then
|
if [ -f ~/.bashrc ]; then
|
||||||
source ~/.bashrc
|
source ~/.bashrc
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
293
dotfiles/git-completion.zsh
Normal file
293
dotfiles/git-completion.zsh
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
#compdef git gitk
|
||||||
|
|
||||||
|
# zsh completion wrapper for git
|
||||||
|
#
|
||||||
|
# Copyright (c) 2012-2020 Felipe Contreras <felipe.contreras@gmail.com>
|
||||||
|
#
|
||||||
|
# The recommended way to install this script is to make a copy of it as a
|
||||||
|
# file named '_git' inside any directory in your fpath.
|
||||||
|
#
|
||||||
|
# For example, create a directory '~/.zsh/', copy this file to '~/.zsh/_git',
|
||||||
|
# and then add the following to your ~/.zshrc file:
|
||||||
|
#
|
||||||
|
# fpath=(~/.zsh $fpath)
|
||||||
|
#
|
||||||
|
# You need git's bash completion script installed. By default bash-completion's
|
||||||
|
# location will be used (e.g. pkg-config --variable=completionsdir bash-completion).
|
||||||
|
#
|
||||||
|
# If your bash completion script is somewhere else, you can specify the
|
||||||
|
# location in your ~/.zshrc:
|
||||||
|
#
|
||||||
|
# zstyle ':completion:*:*:git:*' script ~/.git-completion.bash
|
||||||
|
#
|
||||||
|
|
||||||
|
zstyle -T ':completion:*:*:git:*' tag-order && \
|
||||||
|
zstyle ':completion:*:*:git:*' tag-order 'common-commands'
|
||||||
|
|
||||||
|
zstyle -s ":completion:*:*:git:*" script script
|
||||||
|
if [ -z "$script" ]; then
|
||||||
|
local -a locations
|
||||||
|
local e bash_completion
|
||||||
|
|
||||||
|
bash_completion=$(pkg-config --variable=completionsdir bash-completion 2>/dev/null) ||
|
||||||
|
bash_completion='/usr/share/bash-completion/completions/'
|
||||||
|
|
||||||
|
locations=(
|
||||||
|
"$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash
|
||||||
|
"$HOME/.local/share/bash-completion/completions/git"
|
||||||
|
"$bash_completion/git"
|
||||||
|
'/etc/bash_completion.d/git' # old debian
|
||||||
|
)
|
||||||
|
for e in $locations; do
|
||||||
|
test -f $e && script="$e" && break
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
local old_complete="$functions[complete]"
|
||||||
|
functions[complete]=:
|
||||||
|
GIT_SOURCING_ZSH_COMPLETION=y . "$script"
|
||||||
|
functions[complete]="$old_complete"
|
||||||
|
|
||||||
|
__gitcomp ()
|
||||||
|
{
|
||||||
|
emulate -L zsh
|
||||||
|
|
||||||
|
local cur_="${3-$cur}"
|
||||||
|
|
||||||
|
case "$cur_" in
|
||||||
|
--*=)
|
||||||
|
;;
|
||||||
|
--no-*)
|
||||||
|
local c IFS=$' \t\n'
|
||||||
|
local -a array
|
||||||
|
for c in ${=1}; do
|
||||||
|
if [[ $c == "--" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
c="$c${4-}"
|
||||||
|
case $c in
|
||||||
|
--*=|*.) ;;
|
||||||
|
*) c="$c " ;;
|
||||||
|
esac
|
||||||
|
array+=("$c")
|
||||||
|
done
|
||||||
|
compset -P '*[=:]'
|
||||||
|
compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
local c IFS=$' \t\n'
|
||||||
|
local -a array
|
||||||
|
for c in ${=1}; do
|
||||||
|
if [[ $c == "--" ]]; then
|
||||||
|
c="--no-...${4-}"
|
||||||
|
array+=("$c ")
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
c="$c${4-}"
|
||||||
|
case $c in
|
||||||
|
--*=|*.) ;;
|
||||||
|
*) c="$c " ;;
|
||||||
|
esac
|
||||||
|
array+=("$c")
|
||||||
|
done
|
||||||
|
compset -P '*[=:]'
|
||||||
|
compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
__gitcomp_direct ()
|
||||||
|
{
|
||||||
|
emulate -L zsh
|
||||||
|
|
||||||
|
compset -P '*[=:]'
|
||||||
|
compadd -Q -S '' -- ${(f)1} && _ret=0
|
||||||
|
}
|
||||||
|
|
||||||
|
__gitcomp_nl ()
|
||||||
|
{
|
||||||
|
emulate -L zsh
|
||||||
|
|
||||||
|
compset -P '*[=:]'
|
||||||
|
compadd -Q -S "${4- }" -p "${2-}" -- ${(f)1} && _ret=0
|
||||||
|
}
|
||||||
|
|
||||||
|
__gitcomp_file ()
|
||||||
|
{
|
||||||
|
emulate -L zsh
|
||||||
|
|
||||||
|
compadd -f -p "${2-}" -- ${(f)1} && _ret=0
|
||||||
|
}
|
||||||
|
|
||||||
|
__gitcomp_direct_append ()
|
||||||
|
{
|
||||||
|
__gitcomp_direct "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
__gitcomp_nl_append ()
|
||||||
|
{
|
||||||
|
__gitcomp_nl "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
__gitcomp_file_direct ()
|
||||||
|
{
|
||||||
|
__gitcomp_file "$1" ""
|
||||||
|
}
|
||||||
|
|
||||||
|
_git_zsh ()
|
||||||
|
{
|
||||||
|
__gitcomp "v1.1"
|
||||||
|
}
|
||||||
|
|
||||||
|
__git_complete_command ()
|
||||||
|
{
|
||||||
|
emulate -L zsh
|
||||||
|
|
||||||
|
local command="$1"
|
||||||
|
local completion_func="_git_${command//-/_}"
|
||||||
|
if (( $+functions[$completion_func] )); then
|
||||||
|
emulate ksh -c $completion_func
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
__git_zsh_bash_func ()
|
||||||
|
{
|
||||||
|
emulate -L ksh
|
||||||
|
|
||||||
|
local command=$1
|
||||||
|
|
||||||
|
__git_complete_command "$command" && return
|
||||||
|
|
||||||
|
local expansion=$(__git_aliased_command "$command")
|
||||||
|
if [ -n "$expansion" ]; then
|
||||||
|
words[1]=$expansion
|
||||||
|
__git_complete_command "$expansion"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
__git_zsh_cmd_common ()
|
||||||
|
{
|
||||||
|
local -a list
|
||||||
|
list=(
|
||||||
|
add:'add file contents to the index'
|
||||||
|
bisect:'find by binary search the change that introduced a bug'
|
||||||
|
branch:'list, create, or delete branches'
|
||||||
|
checkout:'checkout a branch or paths to the working tree'
|
||||||
|
clone:'clone a repository into a new directory'
|
||||||
|
commit:'record changes to the repository'
|
||||||
|
diff:'show changes between commits, commit and working tree, etc'
|
||||||
|
fetch:'download objects and refs from another repository'
|
||||||
|
grep:'print lines matching a pattern'
|
||||||
|
init:'create an empty Git repository or reinitialize an existing one'
|
||||||
|
log:'show commit logs'
|
||||||
|
merge:'join two or more development histories together'
|
||||||
|
mv:'move or rename a file, a directory, or a symlink'
|
||||||
|
pull:'fetch from and merge with another repository or a local branch'
|
||||||
|
push:'update remote refs along with associated objects'
|
||||||
|
rebase:'forward-port local commits to the updated upstream head'
|
||||||
|
reset:'reset current HEAD to the specified state'
|
||||||
|
restore:'restore working tree files'
|
||||||
|
rm:'remove files from the working tree and from the index'
|
||||||
|
show:'show various types of objects'
|
||||||
|
status:'show the working tree status'
|
||||||
|
switch:'switch branches'
|
||||||
|
tag:'create, list, delete or verify a tag object signed with GPG')
|
||||||
|
_describe -t common-commands 'common commands' list && _ret=0
|
||||||
|
}
|
||||||
|
|
||||||
|
__git_zsh_cmd_alias ()
|
||||||
|
{
|
||||||
|
local -a list
|
||||||
|
list=(${${(0)"$(git config -z --get-regexp '^alias\.*')"}#alias.})
|
||||||
|
list=(${(f)"$(printf "%s:alias for '%s'\n" ${(f@)list})"})
|
||||||
|
_describe -t alias-commands 'aliases' list && _ret=0
|
||||||
|
}
|
||||||
|
|
||||||
|
__git_zsh_cmd_all ()
|
||||||
|
{
|
||||||
|
local -a list
|
||||||
|
emulate ksh -c __git_compute_all_commands
|
||||||
|
list=( ${=__git_all_commands} )
|
||||||
|
_describe -t all-commands 'all commands' list && _ret=0
|
||||||
|
}
|
||||||
|
|
||||||
|
__git_zsh_main ()
|
||||||
|
{
|
||||||
|
local curcontext="$curcontext" state state_descr line
|
||||||
|
typeset -A opt_args
|
||||||
|
local -a orig_words
|
||||||
|
|
||||||
|
orig_words=( ${words[@]} )
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
'(-p --paginate --no-pager)'{-p,--paginate}'[pipe all output into ''less'']' \
|
||||||
|
'(-p --paginate)--no-pager[do not pipe git output into a pager]' \
|
||||||
|
'--git-dir=-[set the path to the repository]: :_directories' \
|
||||||
|
'--bare[treat the repository as a bare repository]' \
|
||||||
|
'(- :)--version[prints the git suite version]' \
|
||||||
|
'--exec-path=-[path to where your core git programs are installed]:: :_directories' \
|
||||||
|
'--html-path[print the path where git''s HTML documentation is installed]' \
|
||||||
|
'--info-path[print the path where the Info files are installed]' \
|
||||||
|
'--man-path[print the manpath (see `man(1)`) for the man pages]' \
|
||||||
|
'--work-tree=-[set the path to the working tree]: :_directories' \
|
||||||
|
'--namespace=-[set the git namespace]' \
|
||||||
|
'--no-replace-objects[do not use replacement refs to replace git objects]' \
|
||||||
|
'(- :)--help[prints the synopsis and a list of the most commonly used commands]: :->arg' \
|
||||||
|
'(-): :->command' \
|
||||||
|
'(-)*:: :->arg' && return
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
(command)
|
||||||
|
_tags common-commands alias-commands all-commands
|
||||||
|
while _tags; do
|
||||||
|
_requested common-commands && __git_zsh_cmd_common
|
||||||
|
_requested alias-commands && __git_zsh_cmd_alias
|
||||||
|
_requested all-commands && __git_zsh_cmd_all
|
||||||
|
let _ret || break
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
(arg)
|
||||||
|
local command="${words[1]}" __git_dir
|
||||||
|
|
||||||
|
if (( $+opt_args[--bare] )); then
|
||||||
|
__git_dir='.'
|
||||||
|
else
|
||||||
|
__git_dir=${opt_args[--git-dir]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
(( $+opt_args[--help] )) && command='help'
|
||||||
|
|
||||||
|
words=( ${orig_words[@]} )
|
||||||
|
|
||||||
|
__git_zsh_bash_func $command
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_git ()
|
||||||
|
{
|
||||||
|
local _ret=1
|
||||||
|
local cur cword prev
|
||||||
|
|
||||||
|
cur=${words[CURRENT]}
|
||||||
|
prev=${words[CURRENT-1]}
|
||||||
|
let cword=CURRENT-1
|
||||||
|
|
||||||
|
if (( $+functions[__${service}_zsh_main] )); then
|
||||||
|
__${service}_zsh_main
|
||||||
|
elif (( $+functions[__${service}_main] )); then
|
||||||
|
emulate ksh -c __${service}_main
|
||||||
|
elif (( $+functions[_${service}] )); then
|
||||||
|
emulate ksh -c _${service}
|
||||||
|
elif (( $+functions[_${service//-/_}] )); then
|
||||||
|
emulate ksh -c _${service//-/_}
|
||||||
|
fi
|
||||||
|
|
||||||
|
let _ret && _default && _ret=0
|
||||||
|
return _ret
|
||||||
|
}
|
||||||
|
|
||||||
|
_git
|
||||||
@@ -66,6 +66,19 @@
|
|||||||
# git always compare HEAD to @{upstream}
|
# git always compare HEAD to @{upstream}
|
||||||
# svn always compare HEAD to your SVN upstream
|
# svn always compare HEAD to your SVN upstream
|
||||||
#
|
#
|
||||||
|
# You can change the separator between the branch name and the above
|
||||||
|
# state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
|
||||||
|
# is SP.
|
||||||
|
#
|
||||||
|
# When there is an in-progress operation such as a merge, rebase,
|
||||||
|
# revert, cherry-pick, or bisect, the prompt will include information
|
||||||
|
# related to the operation, often in the form "|<OPERATION-NAME>".
|
||||||
|
#
|
||||||
|
# When the repository has a sparse-checkout, a notification of the form
|
||||||
|
# "|SPARSE" will be included in the prompt. This can be shortened to a
|
||||||
|
# single '?' character by setting GIT_PS1_COMPRESSSPARSESTATE, or omitted
|
||||||
|
# by setting GIT_PS1_OMITSPARSESTATE.
|
||||||
|
#
|
||||||
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
|
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
|
||||||
# find one, or @{upstream} otherwise. Once you have set
|
# find one, or @{upstream} otherwise. Once you have set
|
||||||
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
|
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
|
||||||
@@ -78,12 +91,14 @@
|
|||||||
# contains relative to newer annotated tag (v1.6.3.2~35)
|
# contains relative to newer annotated tag (v1.6.3.2~35)
|
||||||
# branch relative to newer tag or branch (master~4)
|
# branch relative to newer tag or branch (master~4)
|
||||||
# describe relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
|
# describe relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
|
||||||
|
# tag relative to any older tag (v1.6.3.1-13-gdd42c2f)
|
||||||
# default exactly matching tag
|
# default exactly matching tag
|
||||||
#
|
#
|
||||||
# If you would like a colored hint about the current dirty state, set
|
# If you would like a colored hint about the current dirty state, set
|
||||||
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
|
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
|
||||||
# the colored output of "git status -sb" and are available only when
|
# the colored output of "git status -sb" and are available only when
|
||||||
# using __git_ps1 for PROMPT_COMMAND or precmd.
|
# using __git_ps1 for PROMPT_COMMAND or precmd in Bash,
|
||||||
|
# but always available in Zsh.
|
||||||
#
|
#
|
||||||
# If you would like __git_ps1 to do nothing in the case when the current
|
# If you would like __git_ps1 to do nothing in the case when the current
|
||||||
# directory is set up to be ignored by git, then set
|
# directory is set up to be ignored by git, then set
|
||||||
@@ -123,6 +138,7 @@ __git_ps1_show_upstream ()
|
|||||||
done <<< "$output"
|
done <<< "$output"
|
||||||
|
|
||||||
# parse configuration values
|
# parse configuration values
|
||||||
|
local option
|
||||||
for option in ${GIT_PS1_SHOWUPSTREAM}; do
|
for option in ${GIT_PS1_SHOWUPSTREAM}; do
|
||||||
case "$option" in
|
case "$option" in
|
||||||
git|svn) upstream="$option" ;;
|
git|svn) upstream="$option" ;;
|
||||||
@@ -273,11 +289,43 @@ __git_ps1_colorize_gitstring ()
|
|||||||
r="$c_clear$r"
|
r="$c_clear$r"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Helper function to read the first line of a file into a variable.
|
||||||
|
# __git_eread requires 2 arguments, the file path and the name of the
|
||||||
|
# variable, in that order.
|
||||||
__git_eread ()
|
__git_eread ()
|
||||||
{
|
{
|
||||||
local f="$1"
|
test -r "$1" && IFS=$'\r\n' read "$2" <"$1"
|
||||||
shift
|
}
|
||||||
test -r "$f" && read "$@" <"$f"
|
|
||||||
|
# see if a cherry-pick or revert is in progress, if the user has committed a
|
||||||
|
# conflict resolution with 'git commit' in the middle of a sequence of picks or
|
||||||
|
# reverts then CHERRY_PICK_HEAD/REVERT_HEAD will not exist so we have to read
|
||||||
|
# the todo file.
|
||||||
|
__git_sequencer_status ()
|
||||||
|
{
|
||||||
|
local todo
|
||||||
|
if test -f "$g/CHERRY_PICK_HEAD"
|
||||||
|
then
|
||||||
|
r="|CHERRY-PICKING"
|
||||||
|
return 0;
|
||||||
|
elif test -f "$g/REVERT_HEAD"
|
||||||
|
then
|
||||||
|
r="|REVERTING"
|
||||||
|
return 0;
|
||||||
|
elif __git_eread "$g/sequencer/todo" todo
|
||||||
|
then
|
||||||
|
case "$todo" in
|
||||||
|
p[\ \ ]|pick[\ \ ]*)
|
||||||
|
r="|CHERRY-PICKING"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
revert[\ \ ]*)
|
||||||
|
r="|REVERTING"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
|
# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
|
||||||
@@ -351,8 +399,8 @@ __git_ps1 ()
|
|||||||
# incorrect.)
|
# incorrect.)
|
||||||
#
|
#
|
||||||
local ps1_expanded=yes
|
local ps1_expanded=yes
|
||||||
[ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
|
[ -z "${ZSH_VERSION-}" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
|
||||||
[ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no
|
[ -z "${BASH_VERSION-}" ] || shopt -q promptvars || ps1_expanded=no
|
||||||
|
|
||||||
local repo_info rev_parse_exit_code
|
local repo_info rev_parse_exit_code
|
||||||
repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
|
repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
|
||||||
@@ -364,7 +412,7 @@ __git_ps1 ()
|
|||||||
return $exit
|
return $exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local short_sha
|
local short_sha=""
|
||||||
if [ "$rev_parse_exit_code" = "0" ]; then
|
if [ "$rev_parse_exit_code" = "0" ]; then
|
||||||
short_sha="${repo_info##*$'\n'}"
|
short_sha="${repo_info##*$'\n'}"
|
||||||
repo_info="${repo_info%$'\n'*}"
|
repo_info="${repo_info%$'\n'*}"
|
||||||
@@ -384,6 +432,13 @@ __git_ps1 ()
|
|||||||
return $exit
|
return $exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
local sparse=""
|
||||||
|
if [ -z "${GIT_PS1_COMPRESSSPARSESTATE}" ] &&
|
||||||
|
[ -z "${GIT_PS1_OMITSPARSESTATE}" ] &&
|
||||||
|
[ "$(git config --bool core.sparseCheckout)" = "true" ]; then
|
||||||
|
sparse="|SPARSE"
|
||||||
|
fi
|
||||||
|
|
||||||
local r=""
|
local r=""
|
||||||
local b=""
|
local b=""
|
||||||
local step=""
|
local step=""
|
||||||
@@ -392,11 +447,7 @@ __git_ps1 ()
|
|||||||
__git_eread "$g/rebase-merge/head-name" b
|
__git_eread "$g/rebase-merge/head-name" b
|
||||||
__git_eread "$g/rebase-merge/msgnum" step
|
__git_eread "$g/rebase-merge/msgnum" step
|
||||||
__git_eread "$g/rebase-merge/end" total
|
__git_eread "$g/rebase-merge/end" total
|
||||||
if [ -f "$g/rebase-merge/interactive" ]; then
|
r="|REBASE"
|
||||||
r="|REBASE-i"
|
|
||||||
else
|
|
||||||
r="|REBASE-m"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if [ -d "$g/rebase-apply" ]; then
|
if [ -d "$g/rebase-apply" ]; then
|
||||||
__git_eread "$g/rebase-apply/next" step
|
__git_eread "$g/rebase-apply/next" step
|
||||||
@@ -411,10 +462,8 @@ __git_ps1 ()
|
|||||||
fi
|
fi
|
||||||
elif [ -f "$g/MERGE_HEAD" ]; then
|
elif [ -f "$g/MERGE_HEAD" ]; then
|
||||||
r="|MERGING"
|
r="|MERGING"
|
||||||
elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
|
elif __git_sequencer_status; then
|
||||||
r="|CHERRY-PICKING"
|
:
|
||||||
elif [ -f "$g/REVERT_HEAD" ]; then
|
|
||||||
r="|REVERTING"
|
|
||||||
elif [ -f "$g/BISECT_LOG" ]; then
|
elif [ -f "$g/BISECT_LOG" ]; then
|
||||||
r="|BISECTING"
|
r="|BISECTING"
|
||||||
fi
|
fi
|
||||||
@@ -439,6 +488,8 @@ __git_ps1 ()
|
|||||||
git describe --contains HEAD ;;
|
git describe --contains HEAD ;;
|
||||||
(branch)
|
(branch)
|
||||||
git describe --contains --all HEAD ;;
|
git describe --contains --all HEAD ;;
|
||||||
|
(tag)
|
||||||
|
git describe --tags HEAD ;;
|
||||||
(describe)
|
(describe)
|
||||||
git describe HEAD ;;
|
git describe HEAD ;;
|
||||||
(* | default)
|
(* | default)
|
||||||
@@ -459,6 +510,7 @@ __git_ps1 ()
|
|||||||
local i=""
|
local i=""
|
||||||
local s=""
|
local s=""
|
||||||
local u=""
|
local u=""
|
||||||
|
local h=""
|
||||||
local c=""
|
local c=""
|
||||||
local p=""
|
local p=""
|
||||||
|
|
||||||
@@ -472,10 +524,9 @@ __git_ps1 ()
|
|||||||
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
|
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
|
||||||
[ "$(git config --bool bash.showDirtyState)" != "false" ]
|
[ "$(git config --bool bash.showDirtyState)" != "false" ]
|
||||||
then
|
then
|
||||||
git diff --no-ext-diff --quiet --exit-code || w="*"
|
git diff --no-ext-diff --quiet || w="*"
|
||||||
if [ -n "$short_sha" ]; then
|
git diff --no-ext-diff --cached --quiet || i="+"
|
||||||
git diff-index --cached --quiet HEAD -- || i="+"
|
if [ -z "$short_sha" ] && [ -z "$i" ]; then
|
||||||
else
|
|
||||||
i="#"
|
i="#"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -487,11 +538,16 @@ __git_ps1 ()
|
|||||||
|
|
||||||
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
||||||
[ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
|
[ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
|
||||||
git ls-files --others --exclude-standard --error-unmatch -- ':/*' >/dev/null 2>/dev/null
|
git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null
|
||||||
then
|
then
|
||||||
u="%${ZSH_VERSION+%}"
|
u="%${ZSH_VERSION+%}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "${GIT_PS1_COMPRESSSPARSESTATE}" ] &&
|
||||||
|
[ "$(git config --bool core.sparseCheckout)" = "true" ]; then
|
||||||
|
h="?"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
|
if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
|
||||||
__git_ps1_show_upstream
|
__git_ps1_show_upstream
|
||||||
fi
|
fi
|
||||||
@@ -499,9 +555,11 @@ __git_ps1 ()
|
|||||||
|
|
||||||
local z="${GIT_PS1_STATESEPARATOR-" "}"
|
local z="${GIT_PS1_STATESEPARATOR-" "}"
|
||||||
|
|
||||||
# NO color option unless in PROMPT_COMMAND mode
|
# NO color option unless in PROMPT_COMMAND mode or it's Zsh
|
||||||
if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
|
if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
|
||||||
__git_ps1_colorize_gitstring
|
if [ $pcmode = yes ] || [ -n "${ZSH_VERSION-}" ]; then
|
||||||
|
__git_ps1_colorize_gitstring
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
b=${b##refs/heads/}
|
b=${b##refs/heads/}
|
||||||
@@ -510,8 +568,8 @@ __git_ps1 ()
|
|||||||
b="\${__git_ps1_branch_name}"
|
b="\${__git_ps1_branch_name}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local f="$w$i$s$u"
|
local f="$h$w$i$s$u"
|
||||||
local gitstring="$c$b${f:+$z$f}$r$p"
|
local gitstring="$c$b${f:+$z$f}${sparse}$r$p"
|
||||||
|
|
||||||
if [ $pcmode = yes ]; then
|
if [ $pcmode = yes ]; then
|
||||||
if [ "${__git_printf_supports_v-}" != yes ]; then
|
if [ "${__git_printf_supports_v-}" != yes ]; then
|
||||||
|
|||||||
@@ -1,28 +1,40 @@
|
|||||||
REPO="~/GitHub/rkiel/git-utilities"
|
REPO="~/GitHub/rkiel/git-utilities"
|
||||||
|
GIT="~/GitHub/git/git"
|
||||||
|
|
||||||
|
# mkdir ~/GitHub/git && cd $_
|
||||||
|
# git clone https://github.com/git/git.git
|
||||||
|
# cd git
|
||||||
|
# ls|grep -v contrib|xargs rm -rf
|
||||||
|
|
||||||
if [ "$2" == "zsh" ] ; then
|
if [ "$2" == "zsh" ] ; then
|
||||||
FILE=~/.zprofile
|
FILE=~/.zprofile
|
||||||
echo >> $FILE
|
echo >> $FILE
|
||||||
echo "GIT_UTILITIES_BIN=${REPO}/bin" >> $FILE
|
|
||||||
echo "export PATH=${GIT_UTILITIES_BIN}:$PATH" >> $FILE
|
|
||||||
if [ ! -z "$1" ]; then
|
if [ ! -z "$1" ]; then
|
||||||
echo "export FEATURE_USER=$1" >> $FILE
|
echo "export FEATURE_USER=$1" >> $FILE
|
||||||
fi
|
fi
|
||||||
|
echo "GIT_UTILITIES_BIN=${REPO}/bin" >> $FILE
|
||||||
|
echo "export PATH=${GIT_UTILITIES_BIN}:$PATH" >> $FILE
|
||||||
|
echo "source ${REPO}/dotfiles/git-completion.zsh" >> $FILE
|
||||||
|
# echo "source ${REPO}/dotfiles/git-prompt.sh" >> $FILE
|
||||||
|
echo "source ${REPO}/dotfiles/zprofile" >> $FILE
|
||||||
|
|
||||||
|
|
||||||
FILE=~/.zshrc
|
FILE=~/.zshrc
|
||||||
echo >> $FILE
|
echo >> $FILE
|
||||||
echo "source ${REPO}/zshrc" >> $FILE
|
echo "source ${REPO}/dotfiles/zshrc" >> $FILE
|
||||||
else
|
else
|
||||||
FILE=~/.bash_profile
|
FILE=~/.bash_profile
|
||||||
echo >> $FILE
|
echo >> $FILE
|
||||||
echo "GIT_UTILITIES_BIN=${REPO}/bin" >> $FILE
|
|
||||||
echo "export PATH=${GIT_UTILITIES_BIN}:$PATH" >> $FILE
|
|
||||||
if [ ! -z "$1" ]; then
|
if [ ! -z "$1" ]; then
|
||||||
echo "export FEATURE_USER=$1" >> $FILE
|
echo "export FEATURE_USER=$1" >> $FILE
|
||||||
fi
|
fi
|
||||||
|
echo "GIT_UTILITIES_BIN=${REPO}/bin" >> $FILE
|
||||||
|
echo "export PATH=${GIT_UTILITIES_BIN}:$PATH" >> $FILE
|
||||||
|
echo "source ${REPO}/dotfiles/git-completion.bash" >> $FILE
|
||||||
|
echo "source ${REPO}/dotfiles/git-prompt.sh" >> $FILE
|
||||||
|
echo "source ${REPO}/dotfiles/bash_profile" >> $FILE
|
||||||
|
|
||||||
FILE=~/.bashrc
|
FILE=~/.bashrc
|
||||||
echo >> $FILE
|
echo >> $FILE
|
||||||
echo "source ${REPO}/bashrc" >> $FILE
|
echo "source ${REPO}/dotfiles/bashrc" >> $FILE
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user