author | Mikael Berthe <mikael@lilotux.net> |
Sun, 15 Jul 2012 16:48:36 +0200 | |
changeset 16 | be9820f70412 |
parent 0 | 7215ca490221 |
permissions | -rw-r--r-- |
0
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
1 |
# bash/zsh git prompt support |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
2 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
3 |
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org> |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
4 |
# Distributed under the GNU General Public License, version 2.0. |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
5 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
6 |
# This script allows you to see the current branch in your prompt. |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
7 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
8 |
# To enable: |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
9 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
10 |
# 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh). |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
11 |
# 2) Add the following line to your .bashrc/.zshrc: |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
12 |
# source ~/.git-prompt.sh |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
13 |
# 3) Change your PS1 to also show the current branch: |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
14 |
# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
15 |
# ZSH: PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
16 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
17 |
# The argument to __git_ps1 will be displayed only if you are currently |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
18 |
# in a git repository. The %s token will be the name of the current |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
19 |
# branch. |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
20 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
21 |
# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value, |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
22 |
# unstaged (*) and staged (+) changes will be shown next to the branch |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
23 |
# name. You can configure this per-repository with the |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
24 |
# bash.showDirtyState variable, which defaults to true once |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
25 |
# GIT_PS1_SHOWDIRTYSTATE is enabled. |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
26 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
27 |
# You can also see if currently something is stashed, by setting |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
28 |
# GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed, |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
29 |
# then a '$' will be shown next to the branch name. |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
30 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
31 |
# If you would like to see if there're untracked files, then you can set |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
32 |
# GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
33 |
# files, then a '%' will be shown next to the branch name. |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
34 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
35 |
# If you would like to see the difference between HEAD and its upstream, |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
36 |
# set GIT_PS1_SHOWUPSTREAM="auto". A "<" indicates you are behind, ">" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
37 |
# indicates you are ahead, and "<>" indicates you have diverged. You |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
38 |
# can further control behaviour by setting GIT_PS1_SHOWUPSTREAM to a |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
39 |
# space-separated list of values: |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
40 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
41 |
# verbose show number of commits ahead/behind (+/-) upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
42 |
# legacy don't use the '--count' option available in recent |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
43 |
# versions of git-rev-list |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
44 |
# git always compare HEAD to @{upstream} |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
45 |
# svn always compare HEAD to your SVN upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
46 |
# |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
47 |
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
48 |
# find one, or @{upstream} otherwise. Once you have set |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
49 |
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
50 |
# setting the bash.showUpstream config variable. |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
51 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
52 |
# __gitdir accepts 0 or 1 arguments (i.e., location) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
53 |
# returns location of .git repo |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
54 |
__gitdir () |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
55 |
{ |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
56 |
# Note: this function is duplicated in git-completion.bash |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
57 |
# When updating it, make sure you update the other one to match. |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
58 |
if [ -z "${1-}" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
59 |
if [ -n "${__git_dir-}" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
60 |
echo "$__git_dir" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
61 |
elif [ -n "${GIT_DIR-}" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
62 |
test -d "${GIT_DIR-}" || return 1 |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
63 |
echo "$GIT_DIR" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
64 |
elif [ -d .git ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
65 |
echo .git |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
66 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
67 |
git rev-parse --git-dir 2>/dev/null |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
68 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
69 |
elif [ -d "$1/.git" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
70 |
echo "$1/.git" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
71 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
72 |
echo "$1" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
73 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
74 |
} |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
75 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
76 |
# stores the divergence from upstream in $p |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
77 |
# used by GIT_PS1_SHOWUPSTREAM |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
78 |
__git_ps1_show_upstream () |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
79 |
{ |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
80 |
local key value |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
81 |
local svn_remote svn_url_pattern count n |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
82 |
local upstream=git legacy="" verbose="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
83 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
84 |
svn_remote=() |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
85 |
# get some config options from git-config |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
86 |
local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
87 |
while read -r key value; do |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
88 |
case "$key" in |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
89 |
bash.showupstream) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
90 |
GIT_PS1_SHOWUPSTREAM="$value" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
91 |
if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
92 |
p="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
93 |
return |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
94 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
95 |
;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
96 |
svn-remote.*.url) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
97 |
svn_remote[ $((${#svn_remote[@]} + 1)) ]="$value" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
98 |
svn_url_pattern+="\\|$value" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
99 |
upstream=svn+git # default upstream is SVN if available, else git |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
100 |
;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
101 |
esac |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
102 |
done <<< "$output" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
103 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
104 |
# parse configuration values |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
105 |
for option in ${GIT_PS1_SHOWUPSTREAM}; do |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
106 |
case "$option" in |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
107 |
git|svn) upstream="$option" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
108 |
verbose) verbose=1 ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
109 |
legacy) legacy=1 ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
110 |
esac |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
111 |
done |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
112 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
113 |
# Find our upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
114 |
case "$upstream" in |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
115 |
git) upstream="@{upstream}" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
116 |
svn*) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
117 |
# get the upstream from the "git-svn-id: ..." in a commit message |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
118 |
# (git-svn uses essentially the same procedure internally) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
119 |
local svn_upstream=($(git log --first-parent -1 \ |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
120 |
--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null)) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
121 |
if [[ 0 -ne ${#svn_upstream[@]} ]]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
122 |
svn_upstream=${svn_upstream[ ${#svn_upstream[@]} - 2 ]} |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
123 |
svn_upstream=${svn_upstream%@*} |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
124 |
local n_stop="${#svn_remote[@]}" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
125 |
for ((n=1; n <= n_stop; n++)); do |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
126 |
svn_upstream=${svn_upstream#${svn_remote[$n]}} |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
127 |
done |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
128 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
129 |
if [[ -z "$svn_upstream" ]]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
130 |
# default branch name for checkouts with no layout: |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
131 |
upstream=${GIT_SVN_ID:-git-svn} |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
132 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
133 |
upstream=${svn_upstream#/} |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
134 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
135 |
elif [[ "svn+git" = "$upstream" ]]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
136 |
upstream="@{upstream}" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
137 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
138 |
;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
139 |
esac |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
140 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
141 |
# Find how many commits we are ahead/behind our upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
142 |
if [[ -z "$legacy" ]]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
143 |
count="$(git rev-list --count --left-right \ |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
144 |
"$upstream"...HEAD 2>/dev/null)" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
145 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
146 |
# produce equivalent output to --count for older versions of git |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
147 |
local commits |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
148 |
if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
149 |
then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
150 |
local commit behind=0 ahead=0 |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
151 |
for commit in $commits |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
152 |
do |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
153 |
case "$commit" in |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
154 |
"<"*) ((behind++)) ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
155 |
*) ((ahead++)) ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
156 |
esac |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
157 |
done |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
158 |
count="$behind $ahead" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
159 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
160 |
count="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
161 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
162 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
163 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
164 |
# calculate the result |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
165 |
if [[ -z "$verbose" ]]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
166 |
case "$count" in |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
167 |
"") # no upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
168 |
p="" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
169 |
"0 0") # equal to upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
170 |
p="=" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
171 |
"0 "*) # ahead of upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
172 |
p=">" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
173 |
*" 0") # behind upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
174 |
p="<" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
175 |
*) # diverged from upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
176 |
p="<>" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
177 |
esac |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
178 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
179 |
case "$count" in |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
180 |
"") # no upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
181 |
p="" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
182 |
"0 0") # equal to upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
183 |
p=" u=" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
184 |
"0 "*) # ahead of upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
185 |
p=" u+${count#0 }" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
186 |
*" 0") # behind upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
187 |
p=" u-${count% 0}" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
188 |
*) # diverged from upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
189 |
p=" u+${count#* }-${count% *}" ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
190 |
esac |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
191 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
192 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
193 |
} |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
194 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
195 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
196 |
# __git_ps1 accepts 0 or 1 arguments (i.e., format string) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
197 |
# returns text to add to bash PS1 prompt (includes branch name) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
198 |
__git_ps1 () |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
199 |
{ |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
200 |
local g="$(__gitdir)" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
201 |
if [ -n "$g" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
202 |
local r="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
203 |
local b="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
204 |
if [ -f "$g/rebase-merge/interactive" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
205 |
r="|REBASE-i" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
206 |
b="$(cat "$g/rebase-merge/head-name")" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
207 |
elif [ -d "$g/rebase-merge" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
208 |
r="|REBASE-m" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
209 |
b="$(cat "$g/rebase-merge/head-name")" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
210 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
211 |
if [ -d "$g/rebase-apply" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
212 |
if [ -f "$g/rebase-apply/rebasing" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
213 |
r="|REBASE" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
214 |
elif [ -f "$g/rebase-apply/applying" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
215 |
r="|AM" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
216 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
217 |
r="|AM/REBASE" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
218 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
219 |
elif [ -f "$g/MERGE_HEAD" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
220 |
r="|MERGING" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
221 |
elif [ -f "$g/CHERRY_PICK_HEAD" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
222 |
r="|CHERRY-PICKING" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
223 |
elif [ -f "$g/BISECT_LOG" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
224 |
r="|BISECTING" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
225 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
226 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
227 |
b="$(git symbolic-ref HEAD 2>/dev/null)" || { |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
228 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
229 |
b="$( |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
230 |
case "${GIT_PS1_DESCRIBE_STYLE-}" in |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
231 |
(contains) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
232 |
git describe --contains HEAD ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
233 |
(branch) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
234 |
git describe --contains --all HEAD ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
235 |
(describe) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
236 |
git describe HEAD ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
237 |
(* | default) |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
238 |
git describe --tags --exact-match HEAD ;; |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
239 |
esac 2>/dev/null)" || |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
240 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
241 |
b="$(cut -c1-7 "$g/HEAD" 2>/dev/null)..." || |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
242 |
b="unknown" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
243 |
b="($b)" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
244 |
} |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
245 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
246 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
247 |
local w="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
248 |
local i="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
249 |
local s="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
250 |
local u="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
251 |
local c="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
252 |
local p="" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
253 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
254 |
if [ "true" = "$(git rev-parse --is-inside-git-dir 2>/dev/null)" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
255 |
if [ "true" = "$(git rev-parse --is-bare-repository 2>/dev/null)" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
256 |
c="BARE:" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
257 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
258 |
b="GIT_DIR!" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
259 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
260 |
elif [ "true" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
261 |
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
262 |
if [ "$(git config --bool bash.showDirtyState)" != "false" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
263 |
git diff --no-ext-diff --quiet --exit-code || w="*" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
264 |
if git rev-parse --quiet --verify HEAD >/dev/null; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
265 |
git diff-index --cached --quiet HEAD -- || i="+" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
266 |
else |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
267 |
i="#" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
268 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
269 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
270 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
271 |
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
272 |
git rev-parse --verify refs/stash >/dev/null 2>&1 && s="$" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
273 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
274 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
275 |
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
276 |
if [ -n "$(git ls-files --others --exclude-standard)" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
277 |
u="%" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
278 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
279 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
280 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
281 |
if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
282 |
__git_ps1_show_upstream |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
283 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
284 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
285 |
|
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
286 |
local f="$w$i$s$u" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
287 |
printf -- "${1:- (%s)}" "$c${b##refs/heads/}${f:+ $f}$r$p" |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
288 |
fi |
7215ca490221
Re-import repository after cleanup from personal stuff (see description)
Mikael Berthe <mikael@lilotux.net>
parents:
diff
changeset
|
289 |
} |