diff --git a/rhodecode/__init__.py b/rhodecode/__init__.py --- a/rhodecode/__init__.py +++ b/rhodecode/__init__.py @@ -1,8 +1,16 @@ -#!/usr/bin/env python -# encoding: utf-8 -# RhodeCode, a web based repository management based on pylons -# Copyright (C) 2009-2010 Marcin Kuzminski -# +# -*- coding: utf-8 -*- +""" + package.rhodecode.__init__ + ~~~~~~~~~~~~~~ + + RhodeCode, a web based repository management based on pylons + versioning implementation: http://semver.org/ + + :created_on: Apr 9, 2010 + :author: marcink + :copyright: (C) 2009-2010 Marcin Kuzminski + :license: GPLv3, see COPYING for more details. +""" # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; version 2 @@ -17,16 +25,16 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. -""" -Created on April 9, 2010 -RhodeCode, a web based repository management based on pylons -versioning implementation: http://semver.org/ -@author: marcink -""" + VERSION = (1, 1, 0, 'beta') +__version__ = '.'.join((str(each) for each in VERSION[:4])) -__version__ = '.'.join((str(each) for each in VERSION[:4])) + +from rhodecode.lib.utils import get_current_revision +_rev = get_current_revision() +if 'beta' in VERSION and _rev: + __version__ += ' [rev:%s]' % _rev[0] def get_version(): """ diff --git a/rhodecode/lib/utils.py b/rhodecode/lib/utils.py --- a/rhodecode/lib/utils.py +++ b/rhodecode/lib/utils.py @@ -29,7 +29,6 @@ import os import logging import datetime import traceback -import ConfigParser from UserDict import DictMixin @@ -443,6 +442,24 @@ def add_cache(settings): 'memory') beaker.cache.cache_regions[region] = region_settings +def get_current_revision(): + """ + Returns tuple of (number, id) from repository containing this package + or None if repository could not be found. + """ + try: + from vcs import get_repo + from vcs.utils.helpers import get_scm + from vcs.exceptions import RepositoryError, VCSError + repopath = os.path.join(os.path.dirname(__file__), '..', '..') + scm = get_scm(repopath)[0] + repo = get_repo(path=repopath, alias=scm) + tip = repo.get_changeset() + return (tip.revision, tip.short_id) + except (ImportError, RepositoryError, VCSError), err: + logging.debug("Cannot retrieve rhodecode's revision. Original error " + "was: %s" % err) + return None #=============================================================================== # TEST FUNCTIONS AND CREATORS