changeset 807:e8c9ff1da9ba beta

added revision into version for beta
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 05 Dec 2010 00:52:11 +0100
parents 499fa8e87c90
children 1af15d66838f
files rhodecode/__init__.py rhodecode/lib/utils.py
diffstat 2 files changed, 38 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/__init__.py	Fri Dec 03 22:38:36 2010 +0100
+++ b/rhodecode/__init__.py	Sun Dec 05 00:52:11 2010 +0100
@@ -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 <marcin@python-works.com>
-# 
+# -*- 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 <marcin@python-works.com>    
+    :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():
     """
--- a/rhodecode/lib/utils.py	Fri Dec 03 22:38:36 2010 +0100
+++ b/rhodecode/lib/utils.py	Sun Dec 05 00:52:11 2010 +0100
@@ -29,7 +29,6 @@
 import logging
 import datetime
 import traceback
-import ConfigParser
 
 from UserDict import DictMixin
 
@@ -443,6 +442,24 @@
                                                              '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