import os
import subprocess
[docs]def git_version():
"""
Inspired by https://github.com/numpy/numpy/blob/master/setup.py
:return: the git revision as a string
"""
def _minimal_ext_cmd(cmd):
# construct minimal environment
env = {}
for k in ['SYSTEMROOT', 'PATH', 'HOME']:
v = os.environ.get(k)
if v is not None:
env[k] = v
# LANGUAGE is used on win32
env['LANGUAGE'] = 'C'
env['LANG'] = 'C'
env['LC_ALL'] = 'C'
result = subprocess.Popen(cmd, stdout=subprocess.PIPE, env=env).communicate()[0]
return result
try:
out = _minimal_ext_cmd(['git', 'describe', '--tags', '--long'])
GIT_REVISION = out.strip().decode('ascii')
if GIT_REVISION:
no_of_commits_since_last_tag = int(GIT_REVISION.split('-')[1])
tag_name = GIT_REVISION.split('-')[0][1:]
if no_of_commits_since_last_tag == 0:
version = tag_name
else:
version = '{}+rev{}'.format(tag_name, no_of_commits_since_last_tag)
else:
version = "Unknown"
except OSError:
version = "Unknown"
return version