Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Ohmyzsh
Commits
9121f3e9
Commit
9121f3e9
authored
Aug 17, 2015
by
Marc Cornellà
Browse files
Merge pull request #4 from wkentaro/fix-git-prompt-plugin
Show tag name when detached status if possible
parents
3c698743
c4ba3065
Changes
1
Show whitespace changes
Inline
Side-by-side
plugins/git-prompt/gitstatus.py
View file @
9121f3e9
...
@@ -3,9 +3,31 @@ from __future__ import print_function
...
@@ -3,9 +3,31 @@ from __future__ import print_function
import
sys
import
sys
import
re
import
re
import
shlex
from
subprocess
import
Popen
,
PIPE
,
check_output
from
subprocess
import
Popen
,
PIPE
,
check_output
def
get_tagname_or_hash
():
"""return tagname if exists else hash"""
cmd
=
'git log -1 --format="%h%d"'
output
=
check_output
(
shlex
.
split
(
cmd
)).
decode
(
'utf-8'
).
strip
()
hash_
,
tagname
=
None
,
None
# get hash
m
=
re
.
search
(
'\(.*\)$'
,
output
)
if
m
:
hash_
=
output
[:
m
.
start
()
-
1
]
# get tagname
m
=
re
.
search
(
'tag: .*[,\)]'
,
output
)
if
m
:
tagname
=
'tags/'
+
output
[
m
.
start
()
+
len
(
'tag: '
):
m
.
end
()
-
1
]
if
tagname
:
return
tagname
elif
hash_
:
return
hash_
return
None
# `git status --porcelain --branch` can collect all information
# `git status --porcelain --branch` can collect all information
# branch, remote_branch, untracked, staged, changed, conflicts, ahead, behind
# branch, remote_branch, untracked, staged, changed, conflicts, ahead, behind
po
=
Popen
([
'git'
,
'status'
,
'--porcelain'
,
'--branch'
],
stdout
=
PIPE
,
stderr
=
PIPE
)
po
=
Popen
([
'git'
,
'status'
,
'--porcelain'
,
'--branch'
],
stdout
=
PIPE
,
stderr
=
PIPE
)
...
@@ -21,8 +43,8 @@ for st in status:
...
@@ -21,8 +43,8 @@ for st in status:
if
st
[
0
]
==
'#'
and
st
[
1
]
==
'#'
:
if
st
[
0
]
==
'#'
and
st
[
1
]
==
'#'
:
if
re
.
search
(
'Initial commit on'
,
st
[
2
]):
if
re
.
search
(
'Initial commit on'
,
st
[
2
]):
branch
=
st
[
2
].
split
(
' '
)[
-
1
]
branch
=
st
[
2
].
split
(
' '
)[
-
1
]
elif
re
.
search
(
'no branch'
,
st
[
2
]):
elif
re
.
search
(
'no branch'
,
st
[
2
]):
# detached status
branch
=
check_output
([
'git'
,
'rev-parse'
,
'--short'
,
'HEAD'
]).
decode
(
'utf-8'
).
strip
()
branch
=
get_tagname_or_hash
()
elif
len
(
st
[
2
].
strip
().
split
(
'...'
))
==
1
:
elif
len
(
st
[
2
].
strip
().
split
(
'...'
))
==
1
:
branch
=
st
[
2
].
strip
()
branch
=
st
[
2
].
strip
()
else
:
else
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment