Отображение информации о git, hg, svn в zsh Linux 21.02.2011

Для отображения в строке приглашения zsh информации о типе VCS, текущей ветке и состоянии репозитария (есть ли не закомиченные файлы) можно воспользоваться встроенным модулем vcs_info либо выдумывать что-то свое.

У vcs_info заявлена поддержка большого числа систем контроля версий (Bazaar, Codeville, CVS, darcs, git, Mercurial, Perforce, Subversion, etc.), но по возможностям сбора информации о текущем состоянии репозитария - лидирует git. Файл отвечающий за функционал с этим VCS самый массивный, а для hg насчитывает пару строк, не считая комментарии :), поэтому отображаемая информация о hg весьма скудна (может есть расширенная версия для hg ?).

Ниже приведены настройки для отображения состояния репозитариев для git и svn, версия для mercurial была позаимствована отсюдова и немного подправлена под себя. Вносить в ~/.zshrc.

hg_branch() {
    hg branch 2> /dev/null | awk '{ print "[hg:" $1 }'
}

hg_dirty() {
    [ $(hg status 2> /dev/null | wc -l) != 0 ] && echo -e "%F{red}*%F{green}]"
    [ $(hg status 2>&1 | wc -l) = 0 ] && echo -e "]"
}

autoload -Uz vcs_info
zstyle ':vcs_info:*' enable svn git
zstyle ':vcs_info:*' check-for-changes true
# zstyle ':vcs_info:*' get-revision true
zstyle ':vcs_info:*' stagedstr "+"
zstyle ':vcs_info:*' unstagedstr "!"
zstyle ':vcs_info:*' formats '[%s:%b%F{red}%c%u%F{green}]'
setopt PROMPT_SUBST
precmd () { 
    vcs_info 
    HG="$(hg_branch)$(hg_dirty)"
}

Теперь добавим сформированную переменную HG и vcs_info_msg_0_ (формирует vcs_info) в zsh prompt, например так

PROMPT='%B%F{yellow}%n%F{green}${HG}${vcs_info_msg_0_}%F{blue}%(!.#.$)%f '

Так выглядит prompt в репозитарии с mercurial, у которого есть незакомиченные файлы

zsh_hg.png

Так выглядит prompt в репозитарии с git, у которого есть unstaged файлы

zsh_git.png

Так выглядит prompt в репозитарии с svn

zsh_svn.png

Бонус

timed небольшая приблуда для слежения из консоли за временем потраченным на проект, при желании можно прикрутить к строке приглашения и трекать время потраченное на проект.

Дополнительное чтиво

Цитата
Каждый думает, что он самый умный и только один знает, что он умнее всех.
Категории
Архив