LINUX.ORG.RU

Поделитесь рецептами PS1 для bash и git

 , ,


0

3

Интересует модификация PS1 для более удобной работы с репозиториями в консоли.

Нашёл вот такие вещи

https://github.com/jimeh/git-aware-prompt

https://gist.github.com/henrik/31631

https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh

А что есть у вас?

Ответ на: комментарий от Chaser_Andrey
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWSTASHSTATE=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_SHOWUPSTREAM=auto

. /usr/share/git/git-prompt.sh

PS1='\u@\[\e[0;33m\]\h \[\e[38;05;68m\]\w$(__git_ps1 " \[\e[m\]*\[\e[1;32m\]%s")\[\e[m\] \$ '
surefire ★★★
()
function b()
{
    basename $(git rev-parse --symbolic-full-name HEAD)
}

$ b
master

Ибо, 99% времени я либо знаю имя ветки, либо оно мне не важно в данный момент. Думаю это почти всегда так, поэтому иметь это в PS1 кажется лишним.

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)

себе сделал так, чтоб показывало текущую ветку при переходе в каталог с гитом:

export PS1="\[\033[01;32m\][\t]\[\033[01;34m\] \$(git rev-parse --abbrev-ref HEAD 2>>/dev/null || echo '\W') \$\[\033[00m\] "

anTaRes ★★★★
()
Ответ на: комментарий от Chaser_Andrey

Она есть и под bash, если что. А zsh всё же советую осилить, оно стоит того (в плане возрастания производительности).

mix_mix ★★★★★
()

У меня свой скрипт, кривой, косой, но работает. BASH

~/.git_bashrc

get_git_str(){

        local pref="$1";
        local post="$2";

        local res_str="";

        txtblk='\e[0;30m' # Black - Regular
        txtred='\e[0;31m' # Red
        txtgrn='\e[0;32m' # Green
        txtylw='\e[0;33m' # Yellow
        txtblu='\e[0;34m' # Blue
        txtpur='\e[0;35m' # Purple
        txtcyn='\e[0;36m' # Cyan
        txtwht='\e[0;37m' # White
        bldblk='\e[1;30m' # Black - Bold
        bldred='\e[1;31m' # Red
        bldgrn='\e[1;32m' # Green
        bldylw='\e[1;33m' # Yellow
        bldblu='\e[1;34m' # Blue
        bldpur='\e[1;35m' # Purple
        bldcyn='\e[1;36m' # Cyan
        bldwht='\e[1;37m' # White
        unkblk='\e[4;30m' # Black - Underline
        undred='\e[4;31m' # Red
        undgrn='\e[4;32m' # Green
        undylw='\e[4;33m' # Yellow
        undblu='\e[4;34m' # Blue
        undpur='\e[4;35m' # Purple
        undcyn='\e[4;36m' # Cyan
        undwht='\e[4;37m' # White
        bakblk='\e[40m'   # Black - Background
        bakred='\e[41m'   # Red
        bakgrn='\e[42m'   # Green
        bakylw='\e[43m'   # Yellow
        bakblu='\e[44m'   # Blue
        bakpur='\e[45m'   # Purple
        bakcyn='\e[46m'   # Cyan
        bakwht='\e[47m'   # White
        txtrst='\e[0m'    # Text Reset

        if [ "$pref" != "" ];then
                res_str="$res_str$pref";
        fi
        git status 2>>/dev/null 1>>/dev/null;
        if [ "$?" == "0" ];then
                res_str="$res_str${txtcyn}{git:$(basename $(git config --local remote.origin.url))/$(git rev-parse --abbrev-ref HEAD)}";
                res_str="$res_str${txtrst}";
        fi
        if [ "$post" != "" ];then
                res_str="$res_str$post";
        fi

        echo -e "$res_str";
}

__git_4ps1(){
        local pexit=$?;
        echo -e $(get_git_str "$1" "$2");
        return $pexit;
}

~/.bashrc

...
source ~/.git_bashrc
PS1='$(__git_4ps1)\033[1;32m[\u@\h \W]\$\033[0m '
...

nickleiten ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.