|
|
|
|
@ -21,65 +21,86 @@ alias hgo='hg outgoing' |
|
|
|
|
alias hglg='hg log --stat -v' |
|
|
|
|
alias hglgp='hg log --stat -p -v' |
|
|
|
|
|
|
|
|
|
function hgic() { |
|
|
|
|
hg incoming "$@" | grep "changeset" | wc -l |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function hgoc() { |
|
|
|
|
hg outgoing "$@" | grep "changeset" | wc -l |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# functions |
|
|
|
|
function hg_root() { |
|
|
|
|
local dir="$PWD" |
|
|
|
|
while [[ "$dir" != "/" ]]; do |
|
|
|
|
if [[ -d "$dir/.hg" ]]; then |
|
|
|
|
echo "$dir" |
|
|
|
|
return 0 |
|
|
|
|
fi |
|
|
|
|
dir="${dir:h}" |
|
|
|
|
done |
|
|
|
|
return 1 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function in_hg() { |
|
|
|
|
if $(hg branch > /dev/null 2>&1); then |
|
|
|
|
echo 1 |
|
|
|
|
fi |
|
|
|
|
hg_root >/dev/null |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function hg_get_branch_name() { |
|
|
|
|
branch=`hg branch 2>/dev/null` |
|
|
|
|
if [ $? -eq 0 ]; then |
|
|
|
|
echo $branch |
|
|
|
|
local dir |
|
|
|
|
if ! dir=$(hg_root); then |
|
|
|
|
return |
|
|
|
|
fi |
|
|
|
|
unset branch |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function hg_prompt_info { |
|
|
|
|
local info rev branch dirty |
|
|
|
|
|
|
|
|
|
if ! info=$(hg id --id --branch 2>/dev/null); then |
|
|
|
|
if [[ ! -f "$dir/.hg/branch" ]]; then |
|
|
|
|
echo default |
|
|
|
|
return |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
rev="${info[(w)1]}" |
|
|
|
|
branch="${${info[(w)2]}:gs/%/%%}" |
|
|
|
|
echo "$(<"$dir/.hg/branch")" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if [[ "$rev" = *+ ]]; then |
|
|
|
|
dirty="$ZSH_THEME_HG_PROMPT_DIRTY" |
|
|
|
|
else |
|
|
|
|
dirty="$ZSH_THEME_HG_PROMPT_CLEAN" |
|
|
|
|
function hg_get_bookmark_name() { |
|
|
|
|
local dir |
|
|
|
|
if ! dir=$(hg_root); then |
|
|
|
|
return |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
echo "${ZSH_THEME_HG_PROMPT_PREFIX}${branch}${dirty}${ZSH_THEME_HG_PROMPT_SUFFIX}" |
|
|
|
|
if [[ ! -f "$dir/.hg/bookmarks.current" ]]; then |
|
|
|
|
return |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
echo "$(<"$dir/.hg/bookmarks.current")" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function hg_dirty_choose { |
|
|
|
|
hg status -mar 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]' |
|
|
|
|
if [ $? -eq 0 ]; then |
|
|
|
|
if [ $pipestatus[-1] -eq 0 ]; then |
|
|
|
|
# Grep exits with 0 when "One or more lines were selected", return "dirty". |
|
|
|
|
echo $1 |
|
|
|
|
return |
|
|
|
|
fi |
|
|
|
|
function hg_prompt_info { |
|
|
|
|
local dir branch dirty |
|
|
|
|
if ! dir=$(hg_root); then |
|
|
|
|
return |
|
|
|
|
fi |
|
|
|
|
echo $2 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function hg_dirty { |
|
|
|
|
hg_dirty_choose $ZSH_THEME_HG_PROMPT_DIRTY $ZSH_THEME_HG_PROMPT_CLEAN |
|
|
|
|
} |
|
|
|
|
if [[ ! -f "$dir/.hg/branch" ]]; then |
|
|
|
|
branch=default |
|
|
|
|
else |
|
|
|
|
branch="$(<"$dir/.hg/branch")" |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
function hgic() { |
|
|
|
|
hg incoming "$@" | grep "changeset" | wc -l |
|
|
|
|
} |
|
|
|
|
dirty="$(hg_dirty)" |
|
|
|
|
|
|
|
|
|
function hgoc() { |
|
|
|
|
hg outgoing "$@" | grep "changeset" | wc -l |
|
|
|
|
echo "${ZSH_THEME_HG_PROMPT_PREFIX}${branch:gs/%/%%}${dirty}${ZSH_THEME_HG_PROMPT_SUFFIX}" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function hg_get_bookmark_name() { |
|
|
|
|
if [ $(in_hg) ]; then |
|
|
|
|
echo $(hg id -B) |
|
|
|
|
function hg_dirty { |
|
|
|
|
local hg_status |
|
|
|
|
if ! hg_status="$(hg status -mar 2>/dev/null)"; then |
|
|
|
|
return |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# grep exits with 0 when dirty |
|
|
|
|
if command grep -Eq '^\s*[ACDIM!?L]' <<< "$hg_status"; then |
|
|
|
|
echo $ZSH_THEME_HG_PROMPT_DIRTY |
|
|
|
|
return |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
echo $ZSH_THEME_HG_PROMPT_CLEAN |
|
|
|
|
} |
|
|
|
|
|