diff --git a/heat/service.py b/heat/service.py index 4ea5ba0d2d..5552444046 100644 --- a/heat/service.py +++ b/heat/service.py @@ -116,7 +116,7 @@ class Service(object): self.timers = [] def start(self): - vcs_string = version.version_string_with_vcs() + vcs_string = version.version_string(type='long') LOG.info(_('Starting %(topic)s node (version %(vcs_string)s)'), {'topic': self.topic, 'vcs_string': vcs_string}) # TODO do we need this ? -> utils.cleanup_file_locks() diff --git a/heat/version.py b/heat/version.py index 82f0aaa12f..2c75971aef 100644 --- a/heat/version.py +++ b/heat/version.py @@ -13,33 +13,52 @@ # License for the specific language governing permissions and limitations # under the License. + +try: + import git +except ImportError: + git = None + try: from heat.vcsversion import version_info except ImportError: - version_info = {'branch_nick': u'LOCALBRANCH', - 'revision_id': 'LOCALREVISION', - 'revno': 0} - -HEAT_VERSION = ['7'] -REVISION = HEAT_VERSION + version_info = {'sha': ''} +HEAT_VERSION = '7' FINAL = False # This becomes true at Release Candidate time -def canonical_version_string(): - return '.'.join(filter(None, HEAT_VERSION)) +def get_git_sha(): + if not git: + return version_info['sha'] + + try: + repo = git.Repo('.') + except InvalidGitRepositoryError: + return version_info['sha'] + return repo.head.commit.hexsha -def version_string(): - if FINAL: - return canonical_version_string() - else: - return '%s-dev' % (canonical_version_string(),) +def write_git_sha(): + if not git: + return + + sha = get_git_sha() + + if sha: + with open('heat/vcsversion.py', 'w') as version_file: + version_file.write(""" +# This file is automatically generated by heat's setup.py, so don't edit it. :) +version_info = { + 'sha': '%s' +} +""" % (sha)) -def vcs_version_string(): - return "%s:%s" % (version_info['branch_nick'], version_info['revision_id']) - - -def version_string_with_vcs(): - return "%s-%s" % (canonical_version_string(), vcs_version_string()) +def version_string(type='short'): + version = HEAT_VERSION + if not FINAL: + version += '-dev ' + get_git_sha() + elif type != 'short': + version += ' ' + get_git_sha() + return version diff --git a/setup.py b/setup.py index 72b1d95683..4503489e08 100755 --- a/setup.py +++ b/setup.py @@ -21,12 +21,12 @@ import setuptools from heat.openstack.common import setup -# import this after write_vcsversion because version imports vcsversion from heat import version +version.write_git_sha() setuptools.setup( name='heat', - version=version.canonical_version_string(), + version=version.HEAT_VERSION, description='The heat project provides services for provisioning ' 'virtual machines', license='Apache License (2.0)',