2012-05-03 20 views
10

Mam skrypt (nie napisany przeze mnie), który pokazuje gałąź git/svn w moim wierszu polecenia. Czy ktoś wie, dlaczego to nie działałoby na Macu? Działa doskonale w systemie Linux.Zmienna PSV env nie działa na komputerze Mac

Od https://github.com/xumingming/dotfiles/blob/master/.ps1:

# Display ps1 with colorful pwd and git status 
# Acording to Jimmyxu .bashrc 
# Modified by Ranmocy 
# -- 

if type -P tput &>/dev/null && tput setaf 1 &>/dev/null; then 
    color_prompt=yes 
else 
    color_prompt= 
fi 

__repo() { 
    branch=$(type __git_ps1 &>/dev/null && __git_ps1 | sed -e "s/^ (//" -e "s/)$//") 
    if [ "$branch" != "" ]; then 
     vcs=git 
    else 
     branch=$(type -P hg &>/dev/null && hg branch 2>/dev/null) 
     if [ "$branch" != "" ]; then 
      vcs=hg 
     elif [ -e .bzr ]; then 
      vcs=bzr 
     elif [ -e .svn ]; then 
      vcs=svn 
     else 
      vcs= 
     fi 
    fi 
    if [ "$vcs" != "" ]; then 
     if [ "$branch" != "" ]; then 
      repo=$vcs:$branch 
     else 
      repo=$vcs 
     fi 
     echo -n "($repo)" 
    fi 
    return 0 
} 

if [ "$color_prompt" = yes ]; then 
# PS1='\[\e[01;32m\]\[email protected]\h\[\e[00m\]:\[\e[01;34m\]\w\[\e[33;40m\]$(__repo)\[\e[00m\]\$ ' 
    PS1='\[\e[01;32m\]\u\[\e[00m\]:\[\e[01;34m\]\W\[\e[33m\]$(__repo)\[\e[00m\]\$ ' 
else 
    PS1='\[email protected]\h:\w$(__repo)\$ ' 
fi 
unset color_prompt 

case "$TERM" in 
xterm*|rxvt*) 
    PS1="\[\e]0;\W\a\]$PS1" 
    ;; 
*) 
    ;; 
esac 
+0

@Alain, mam zamiar wyjść na kończynę i zasugerować, że "Jak mogę to zrobić działa na komputerze Mac?" – blahdiblah

+0

@blahdiblah Hmm, redaktor sugeruje, że to "Dlaczego to nie działa na Macu?" – Alain

+0

@Alain Damn! Byłem tak blisko! – blahdiblah

Odpowiedz

21

Mac OS X instalacje Git nie mają __git_ps1 włączone.

Zastosowanie:

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'" 

jako zmiany.

+4

'\ (*. *) /' Hooray dla grep '\ (*. *) /' – Alain

+0

Nie piękne rozwiązanie, ale miałem ten sam problem jakiś czas temu i to jest to, co znalazłem i umieściłem w moim '.profile '. Prawdopodobnie nie udało mi się uzyskać lepszego. Byłbym szczęśliwy widząc to. –

+0

wielkie dzięki, działa! –

14

Podany skrypt nie może wykryć repozytoriów git, jeśli polecenie __git_ps1 ulegnie awarii. Dodaj to do ~/.bash_profile:

source /usr/local/git/contrib/completion/git-completion.bash 
source /usr/local/git/contrib/completion/git-prompt.sh 

Zakładając, że przechowywany plik skryptu jako ~/.ps1 również dodać:

source ~/.ps1 

  • Rozwiązanie to umożliwia również realizację kartę do git.
  • Mac OS X installations of git do zawierały __git_ps1, dzięki sschuberth i cheapener za wzmiankę o git-completion.bash.
+2

Mój plik znajdował się w /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash.Mountain Lion z zainstalowanym Xcode CLI. –

1

Jeśli zainstalowano git poprzez DarwinPorts (git-core), należy dodać następujące ~/.bash_profile:

source /opt/local/etc/profile.d/bash_completion.sh 
source /opt/local/share/git-core/git-prompt.sh 

Położenie git-prompt.sh wydawało się, że zmienił się kilka razy.

10

W nowym Yosemite mac za pomocą wbudowanego w git, użyłem to:

source /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash 
source /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh 
export PS1='\[\e]0;\[email protected]\h: \w\a\]\[\e[32;1m\]\[email protected]\h:\w \[\e[33;1m\]$(__git_ps1 "[%s] ")\[\e[32;1m\]\$ \[\e[0m\]' 

Uwaga: na El Capitan, musiałem zmienić ścieżkę skryptów git do /Applications/Xcode.app/Contents/Developer/usr/share/git-core i myślę, że trzeba mieć Zainstalowany XCode do działania.

+0

Rzeczywiście działa to na OS X 10.10 Yosemite. –

+0

TAK SIR, działał idealnie. – oldergod