]> git.alrj.org Git - zsh.d.git/blob - S60_git
Show exit code as signal name, if terminated by a signal.
[zsh.d.git] / S60_git
1 #! /usr/bin/zsh
2
3 export __ZSH_GIT_BASEDIR=""
4 export __ZSH_GIT_BRANCH=""
5 export __ZSH_GIT_SUBDIR=""
6 export __ZSH_GIT_STATE=""
7 export __ZSH_GIT_VARS_INVALID=1
8
9 git_parse() {
10
11     local git_dir ref base_dir sub_dir action branch
12
13     git_dir=$(git rev-parse --git-dir 2> /dev/null) || return
14
15     base_dir=${$(readlink -f "$git_dir/..")/$HOME/'~'}
16
17     sub_dir=$(git rev-parse --show-prefix)
18     sub_dir=${sub_dir%/}
19     ref=$(git symbolic-ref HEAD 2> /dev/null) || return
20
21     psvar[3]=""
22
23     if [ -d "$git_dir/../.dotest" ]; then
24       if [ -f "$git_dir/../.dotest/rebasing" ]; then
25         psvar[3]="-rebase"
26       elif [ -f "$git_dir/../.dotest/applying" ]; then
27         psvar[3]="-am"
28       else
29         psvar[3]="-am-rebase"
30       fi
31       branch="$ref"
32     elif [ -f "$git_dir/.dotest-merge/interactive" ]; then
33       psvar[3]="-rebase-i"
34       branch="$(cat "$git_dir/.dotest-merge/head-name")"
35     elif [ -d "$git_dir/.dotest-merge" ]; then
36       psvar[3]="-rebase-m"
37       branch="$(cat "$git_dir/.dotest-merge/head-name")"
38     elif [ -f "$git_dir/MERGE_HEAD" ]; then
39       psvar[3]="-merge"
40       branch="$ref"
41     else
42       test -f "$git_dir/BISECT_LOG" && psvar[3]="bisect"
43       branch="$(git symbolic-ref HEAD 2>/dev/null)" || \
44         branch="$(git describe --exact-match HEAD 2>/dev/null)" || \
45         branch="$(cut -c1-7 "$git_dir/HEAD")..."
46     fi
47
48     # Got here, we're in git
49     psvar[4]=${branch#refs/heads/}
50     psvar[5]=${base_dir}
51     psvar[6]=${sub_dir}
52 }
53
54 precmd_functions+='git_parse'