Andere Tipps

Eigentlich, denke ich, es ist das erste, das den Fehler verursacht, weil, wenn ich es in einem nicht-git Verzeichnis laufen, ich die Fehler bekommen. Der zweite nicht die Fehler ausspucken.

Sie könnten die Fehlerausgabe umleiten /dev/null.

Dies würde in bash arbeiten, nicht sicher über zsh aber es sollte Ihnen eine Vorstellung davon, wie es weiter zu gehen.

git_prompt_info() {
    ref=$(git symbolic-ref HEAD 2>/dev/null)
    if [ ! -z $ref ]; then
        newref=$(echo $ref | cut -d'/' -f3)
        echo $newref
    fi
}

Ich weiß nicht, was allerdings teurer wäre, git laufen oder alle Verzeichnisse durchlaufen, bis ein .git Verzeichnis. Git wahrscheinlich funktioniert die Directory Traversal sowieso. Nicht sicher.

wäre so etwas wie dieses Werk?


get_git_dirty() {
set __MT_OK__=0

if [[ -d .git ]]; then
    __MT_OK__=1
fi

while [[ ! -d .git ]]; do
    cd ..
    if [[ -d .git ]]; then
        __MT_OK__=1
        break
    fi
    if [[ $PWD = "/" ]]; then
        break
    fi
done



if [[ __MT_OK__ -eq 1 ]]; then
           git diff --quiet || echo '*'                                                    
fi
}

Dies kann die eleganteste Lösung nicht sein, aber es sollte funktionieren.

ich diesen Code endlich zu arbeiten:

 # get the name of the branch we are on
 git_prompt_info() {
     BR=$(git symbolic-ref HEAD 2>/dev/null | awk -F/ '{ print $3 }') || { echo "$@" ; exit ; }
     echo $BR
 }

, während der Rest ist die gleiche wie zuvor.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top