mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-12 21:39:48 +01:00
Rewrite gitstatus collection to be more robust (#7322)
Fix the finicky parsing logic and just ask git the necessary information directly.
This commit is contained in:
parent
feaee04464
commit
e204c596ef
1 changed files with 8 additions and 13 deletions
|
@ -4,26 +4,21 @@ from __future__ import print_function
|
||||||
import os
|
import os
|
||||||
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():
|
def get_tagname_or_hash():
|
||||||
"""return tagname if exists else 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
|
# get hash
|
||||||
m = re.search('\(.*\)$', output)
|
hash_cmd = ['git', 'rev-parse', '--short', 'HEAD']
|
||||||
if m:
|
hash_ = check_output(hash_cmd).strip()
|
||||||
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:
|
# get tagname
|
||||||
return tagname.replace(' ', '')
|
tags_cmd = ['git', 'for-each-ref', '--points-at=HEAD', '--count=2', '--sort=-version:refname', '--format=%(refname:short)', 'refs/tags']
|
||||||
|
tags = check_output(tags_cmd).split()
|
||||||
|
|
||||||
|
if tags:
|
||||||
|
return tags[0] + ('+' if len(tags) > 1 else '')
|
||||||
elif hash_:
|
elif hash_:
|
||||||
return hash_
|
return hash_
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in a new issue