1 from stgit.exception import StgException
2 from stgit import run, utils
3 import os.path, re, sys
5 class VersionUnavailable(StgException):
8 def git_describe_version():
11 v = run.Run('git', 'describe', '--tags', '--abbrev=4'
12 ).cwd(path).output_one_line()
13 except run.RunException, e:
14 raise VersionUnavailable(str(e))
15 if not re.match(r'^v[0-9]', v):
16 raise VersionUnavailable('%s: bad version' % v)
18 dirty = run.Run('git', 'diff-index', '--name-only', 'HEAD'
19 ).cwd(path).raw_output()
20 except run.RunException, e:
21 raise VersionUnavailable(str(e))
24 return re.sub('-', '.', utils.strip_prefix('v', v))
26 def builtin_version():
28 import builtin_version as bv
30 raise VersionUnavailable()
34 def write_builtin_version():
36 v = git_describe_version()
37 except VersionUnavailable:
39 f = file(os.path.join(sys.path[0], 'stgit', 'builtin_version.py'), 'w')
40 f.write('# This file was generated automatically. Do not edit by hand.\n'
44 for v in [git_describe_version, builtin_version]:
47 except VersionUnavailable:
49 return 'unknown-version'
51 version = get_version()
53 # minimum version requirements
55 python_min_ver = '2.4'